#include "boost/optional.hpp" #include "boost/static_assert.hpp" #include "boost/type_traits.hpp" using namespace boost; typedef optional oc; typedef optional oi; typedef optional os; BOOST_STATIC_ASSERT( sizeof(oc) <= 2*sizeof(char) ); BOOST_STATIC_ASSERT( sizeof(oi) <= 2*sizeof(int) ); BOOST_STATIC_ASSERT( !has_trivial_default_constructor::value ); //never true for optional BOOST_STATIC_ASSERT( !has_trivial_default_constructor::value ); BOOST_STATIC_ASSERT( has_trivial_destructor::value ); //should be true where has_trivial_destructor BOOST_STATIC_ASSERT( !has_trivial_destructor::value ); /* has_trivial_assign has_trivial_constructor has_trivial_copy has_trivial_copy_constructor has_trivial_default_constructor has_trivial_destructor */