
FYI, I just merged value_init from the trunk to the release branch: http://svn.boost.org/trac/boost/changeset/46464 It now has a little const object, boost::initialized_value, that has a generic conversion operator, so that one can initialize any CopyConstructible, DefaultConstructible type of object as follows: T obj = boost::initialized_value; boost::initialized_value provides a workaround to compilers that haven't yet fully implemented value-initialization. Including compiler versions from MSVC, Borland, Sun, and GCC: http://svn.boost.org/trac/boost/browser/branches/release/libs/utility/value_... For example, suppose your class Foo has all its data stored in a simple aggregate struct, called Bar: class Foo { Bar m_bar; public: Foo(); }; struct Bar { std::string s; int i; }; The default constructor of Foo would typically want to value-initialize its data: Foo::Foo() : m_bar() // Value-initialization. { } This may not work properly, because of those aforementioned compiler issues. (Bar::i may be left uninitialized!) So instead, boost::initialized_value could be of help: Foo::Foo() : m_bar( boost::initialized_value ) // Works fine :-) { } boost::initialized_value is in fact just an extra convenience feature of the template boost::value_initialized<T>, by Fernando Cacciola. So Fernando and I agreed to add initialized_value to <utility/value_init.hpp> Kind regards, -- Niels Dekker http://www.xs4all.nl/~nd/dekkerware Scientific programmer at LKEB, Leiden University Medical Center