Index: value_init.hpp =================================================================== --- value_init.hpp (revision 56367) +++ value_init.hpp (working copy) @@ -36,6 +36,10 @@ private : struct wrapper { + + wrapper() { } + wrapper(T const & o) : data(o) { } + #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) typename #endif @@ -78,6 +82,11 @@ new (wrapper_address()) wrapper( static_cast(*(arg.wrapper_address()))); } + explicit value_initialized(T const & arg) + { + new (wrapper_address()) wrapper(arg); + } + value_initialized & operator=(value_initialized const & arg) { // Assignment is only allowed when T is non-const.