detail::basic_inplace
// In header: <detail/inplace.hpp> template<typename impl_type, typename size_type, bool has_null_state> struct basic_inplace { // types typedef basic_inplace this_type; typedef boost::aligned_storage< size_type::size, size_type::alignment > storage_type; typedef typename std::conditional< has_null_state, local_traits< impl_type, storage_type >, static_traits< impl_type, storage_type > >::type traits_storage_type; // construct/copy/destruct basic_inplace(std::nullptr_t); basic_inplace(this_type const &); basic_inplace(this_type &&); template<typename... arg_types> basic_inplace(detail::in_place_type, arg_types &&...); this_type & operator=(this_type const &); this_type & operator=(this_type &&); ~basic_inplace(); // public member functions template<typename derived_type, typename... arg_types> void emplace(arg_types &&...); impl_type * get() const; // private member functions template<typename derived_type, typename... arg_types> void _construct(arg_types &&...); };