...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
// In Header: <
boost/optional/optional.hpp>
namespace boost {
class in_place_init_t { /* see below */ } ;
const in_place_init_t in_place_init ( /* see below */ ) ;
class in_place_init_if_t { /*see below*/ } ;
const in_place_init_if_t in_place_init_if ( /*see below*/ ) ;
template <class T>
class optional ;
template <class T>
class optional<T&> ;
template<class T> inline bool operator == ( optional<T> const& x, optional<T> const& y ) ;
template<class T> inline bool operator != ( optional<T> const& x, optional<T> const& y ) ;
template<class T> inline bool operator < ( optional<T> const& x, optional<T> const& y ) ;
template<class T> inline bool operator > ( optional<T> const& x, optional<T> const& y ) ;
template<class T> inline bool operator <= ( optional<T> const& x, optional<T> const& y ) ;
template<class T> inline bool operator >= ( optional<T> const& x, optional<T> const& y ) ;
template<class T> inline bool operator == ( optional<T> const& x, none_t ) noexcept ;
template<class T> inline bool operator != ( optional<T> const& x, none_t ) noexcept ;
template<class T> inline optional<T> make_optional ( T const& v ) ;
template<class T> inline optional<std::decay_t<T>> make_optional ( T && v ) ;
template<class T> inline optional<T> make_optional ( bool condition, T const& v ) ;
template<class T> inline optional<std::decay_t<T>> make_optional ( bool condition, T && v ) ;
template<class T> inline auto get_optional_value_or ( optional<T> const& opt, typename optional<T>::reference_const_type def ) -> typename optional<T>::reference_const_type;
template<class T> inline auto get_optional_value_or ( optional<T> const& opt, typename optional<T>::reference_type def ) -> typename optional<T>::reference_type ;
template<class T> inline T const& get ( optional<T> const& opt ) ;
template<class T> inline T& get ( optional<T> & opt ) ;
template<class T> inline T const* get ( optional<T> const* opt ) ;
template<class T> inline T* get ( optional<T>* opt ) ;
template<class T> inline auto get_pointer ( optional<T> const& opt ) -> see below;
template<class T> inline auto get_pointer ( optional<T> & opt ) -> see below;
template<class T> inline void swap( optional<T>& x, optional<T>& y ) ;
template<class T> inline void swap( optional<T&>& x, optional<T&>& y ) ;
} // namespace boost
namespace std {
template <typename T>
struct hash<boost::optional<T> > ;
template <typename T>
struct hash<boost::optional<T&> > ;
} // namespace std