
"Thorsten Ottosen" <thorsten.ottosen@dezide.com> wrote in message news:4449FFDF.4000107@dezide.com... : some simple function would allow you to write : : data.set( p / "debug" / "info" / "testfail" / at(2) , "file.hpp" ); Somehow I find it inelegant to be composing a path object (vector of strings?) instead of directly indexing the structure. It might be "cool" if we could write: pt / "debug" / "info" / "testfail" % 2 = "file.hpp" ; But there is a problem: the desired behavior of "path access" is not the same whether one is reading or setting a value -- as demonstrated by the std::map::operator[] snafu: If the path does not currently exist, we will want a 'put' operation to succeed, while a 'get' operation should either fail (throw an exception) or return a dummy "null" tree. I don't have time to seriously look into this, but I'm sure that a solution can be worked out. In my experience, however, I have rarely(ever?) needed to directly access a 'deep' field of a tree with a path. IMO it would be very reasonable to initially accept ptree without a path-access mechanism -- which can easily be added latter -- if we find that things are already complicated enough this way. Just for laughs: put( pt ) / "debug" / "info" / "testfail" % 2 << "file.hpp" ; get( pt ) / "debug" / "info" / "testfail" % 2 >> var; tryget( pt ) / "debug" / "info" / "testfail" % 2 >> var || (var=5); - no explicit template params are ever specified - default value is optionally specified after a ||, but the default expression is not evaluated if not used. But don't you ever quote me on this ! ;-) Ivan -- http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form