int main() { using boost::get_pointer; { X * p = new X; BOOST_TEST( get_pointer( p ) == p ); delete p; } #if !defined( BOOST_NO_AUTO_PTR ) { std::auto_ptr< X > p( new X ); BOOST_TEST( get_pointer( p ) == p.get() ); } #endif #if !defined( BOOST_NO_CXX11_SMART_PTR ) { std::unique_ptr< X > p( new X ); BOOST_TEST( get_pointer( p ) == p.get() ); } { std::shared_ptr< X > p( new X ); BOOST_TEST( get_pointer( p ) == p.get() ); } #endif return boost::report_errors(); }
inline void check_value_const ( optional<T> const& opt, T const& v, T const& z ) { BOOST_TEST( *opt == v ) ; BOOST_TEST( *opt != z ) ; BOOST_TEST( opt.get() == v ) ; BOOST_TEST( opt.get() != z ) ; BOOST_TEST( (*(opt.operator->()) == v) ) ; BOOST_TEST( *get_pointer(opt) == v ) ; }
inline void check_uninitialized_const ( optional<T> const& opt ) { #ifndef BOOST_OPTIONAL_NO_NULL_COMPARE BOOST_TEST( opt == 0 ) ; #endif BOOST_TEST( !opt ) ; BOOST_TEST( !get_pointer(opt) ) ; BOOST_TEST( !opt.get_ptr() ) ; }
inline void check_initialized_const ( optional<T> const& opt ) { BOOST_CHECK( opt ) ; #ifndef BOOST_OPTIONAL_NO_NULL_COMPARE BOOST_CHECK( opt != 0 ) ; #endif BOOST_CHECK ( !!opt ) ; BOOST_CHECK ( get_pointer(opt) ) ; BOOST_CHECK ( opt.get_ptr() ) ; }
void test() { { boost::intrusive_ptr<X> px; BOOST_TEST(px? false: true); BOOST_TEST(!px); #if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) using boost::get_pointer; #endif BOOST_TEST(get_pointer(px) == px.get()); } { boost::intrusive_ptr<X> px(0); BOOST_TEST(px? false: true); BOOST_TEST(!px); #if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) using boost::get_pointer; #endif BOOST_TEST(get_pointer(px) == px.get()); } { boost::intrusive_ptr<X> px(new X); BOOST_TEST(px? true: false); BOOST_TEST(!!px); BOOST_TEST(&*px == px.get()); BOOST_TEST(px.operator ->() == px.get()); #if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) using boost::get_pointer; #endif BOOST_TEST(get_pointer(px) == px.get()); } }
inline void check_value ( optional<T>& opt, T const& v, T const& z ) { #if BOOST_WORKAROUND(BOOST_MSVC, <= 1200) // 1200 == VC++ 6.0 // For some reason, VC6.0 is creating a temporary while evaluating (*opt == v), // so we need to turn throw on copy off first. reset_throw_on_copy( ARG(T) ) ; #endif BOOST_TEST( *opt == v ) ; BOOST_TEST( *opt != z ) ; BOOST_TEST( opt.get() == v ) ; BOOST_TEST( opt.get() != z ) ; BOOST_TEST( (*(opt.operator->()) == v) ) ; BOOST_TEST( *get_pointer(opt) == v ) ; check_value_const(opt,v,z); }