Line data Source code
1 : // This header intentionally has no include guards. 2 : // 3 : // Copyright (c) 2001-2009, 2012 Peter Dimov 4 : // 5 : // Distributed under the Boost Software License, Version 1.0. 6 : // See accompanying file LICENSE_1_0.txt or copy at 7 : // http://www.boost.org/LICENSE_1_0.txt 8 : 9 : #if !defined( BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS ) && !defined( BOOST_NO_CXX11_NULLPTR )\ 10 : && !(defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, <= 0x5130)) 11 : 12 0 : explicit operator bool () const BOOST_SP_NOEXCEPT 13 : { 14 : return px != 0; 15 : } 16 : 17 : #elif ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, < 0x570) ) || defined(__CINT__) 18 : 19 : operator bool () const BOOST_SP_NOEXCEPT 20 : { 21 : return px != 0; 22 : } 23 : 24 : #elif defined( _MANAGED ) 25 : 26 : static void unspecified_bool( this_type*** ) 27 : { 28 : } 29 : 30 : typedef void (*unspecified_bool_type)( this_type*** ); 31 : 32 : operator unspecified_bool_type() const BOOST_SP_NOEXCEPT 33 : { 34 : return px == 0? 0: unspecified_bool; 35 : } 36 : 37 : #elif \ 38 : ( defined(__MWERKS__) && BOOST_WORKAROUND(__MWERKS__, < 0x3200) ) || \ 39 : ( defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ < 304) ) || \ 40 : ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590) ) 41 : 42 : typedef element_type * (this_type::*unspecified_bool_type)() const; 43 : 44 : operator unspecified_bool_type() const BOOST_SP_NOEXCEPT 45 : { 46 : return px == 0? 0: &this_type::get; 47 : } 48 : 49 : #else 50 : 51 : typedef element_type * this_type::*unspecified_bool_type; 52 : 53 : operator unspecified_bool_type() const BOOST_SP_NOEXCEPT 54 : { 55 : return px == 0? 0: &this_type::px; 56 : } 57 : 58 : #endif 59 : 60 : // operator! is redundant, but some compilers need it 61 0 : bool operator! () const BOOST_SP_NOEXCEPT 62 : { 63 : return px == 0; 64 : }