std::vector and default constructor
It would be helpful to have something like std::vector which allows one to pass some argument which is in turn passed to the constructor of every element so that not the default constructor is being called. This would be helpful for e.g. objects located in memory created by memory mapped files. Peter "The first point (using an init() function in preference to a constructor) is bogus. Using constructors and exception handling is a more general and systematic way of dealing with resource acquisition and initialization errors. This style is a relic of pre-exception C++." -- Stroustrup
It would be helpful to have something like std::vector which allows one to pass some argument which is in turn passed to the constructor of every element so that not the default constructor is being called.
This would be helpful for e.g. objects located in memory created by memory
mapped files.
I think you could probably do this by building a custom allocator, so you could write something like:
vector
what about if I have more than one memory mapped file and multiple such vectors in separate memory mapped io areas?
I think the method you're suggesting uses global variables, doesn't it?
Peter
________________________________
From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Andrew Sutton
Sent: Friday, November 21, 2008 12:44
To: boost-users@lists.boost.org
Subject: Re: [Boost-users] std::vector and default constructor
It would be helpful to have something like std::vector which allows one to pass some argument which is in turn passed to the constructor of every element so that not the default constructor is being called.
This would be helpful for e.g. objects located in memory created by memory mapped files.
I think you could probably do this by building a custom allocator, so you could write something like:
vector
what about if I have more than one memory mapped file and multiple such vectors in separate memory mapped io areas?
I think the method you're suggesting uses global variables, doesn't it
No. I'm thinking about templating the allocator with a make_-style function that reutnrs an object of type T and then copying its value into the object that you're allocating. So somewhere in the allocator you'd have: new T(make_func()) This also won't result in the copy that it might seem to require. Most (all?) compilers will optimize it out. Andrew Sutton andrew.n.sutton@gmail.com
participants (2)
-
Andrew Sutton
-
peter_foelsche@agilent.com