...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
BOOST_TRIBOOL_THIRD_STATE(Name)
namespace boost { namespace logic { class tribool; BOOST_CONSTEXPR bool indeterminate(tribool, unspecified = unspecified); BOOST_CONSTEXPR tribool operator!(tribool); BOOST_CONSTEXPR tribool operator&&(tribool, tribool); BOOST_CONSTEXPR tribool operator&&(tribool, bool); BOOST_CONSTEXPR tribool operator&&(bool, tribool); BOOST_CONSTEXPR tribool operator&&(indeterminate_keyword_t, tribool); BOOST_CONSTEXPR tribool operator&&(tribool, indeterminate_keyword_t); BOOST_CONSTEXPR tribool operator||(tribool, tribool); BOOST_CONSTEXPR tribool operator||(tribool, bool); BOOST_CONSTEXPR tribool operator||(bool, tribool); BOOST_CONSTEXPR tribool operator||(indeterminate_keyword_t, tribool); BOOST_CONSTEXPR tribool operator||(tribool, indeterminate_keyword_t); BOOST_CONSTEXPR tribool operator==(tribool, tribool); BOOST_CONSTEXPR tribool operator==(tribool, bool); BOOST_CONSTEXPR tribool operator==(bool, tribool); BOOST_CONSTEXPR tribool operator==(indeterminate_keyword_t, tribool); BOOST_CONSTEXPR tribool operator==(tribool, indeterminate_keyword_t); BOOST_CONSTEXPR tribool operator!=(tribool, tribool); BOOST_CONSTEXPR tribool operator!=(tribool, bool); BOOST_CONSTEXPR tribool operator!=(bool, tribool); BOOST_CONSTEXPR tribool operator!=(indeterminate_keyword_t, tribool); BOOST_CONSTEXPR tribool operator!=(tribool, indeterminate_keyword_t); } }
namespace boost { namespace logic { template<typename CharT> class indeterminate_name; template<typename T> std::basic_string< T > get_default_indeterminate_name(); // Returns the character string "indeterminate". template<> std::basic_string< char > get_default_indeterminate_name<char >(); // Returns the wide character string L"indeterminate". template<> std::basic_string< wchar_t > get_default_indeterminate_name<wchar_t >(); template<typename CharT, typename Traits> std::basic_ostream< CharT, Traits > & operator<<(std::basic_ostream< CharT, Traits > &, tribool); template<typename CharT, typename Traits> std::basic_ostream< CharT, Traits > & operator<<(std::basic_ostream< CharT, Traits > &, unspecified); template<typename CharT, typename Traits> std::basic_istream< CharT, Traits > & operator>>(std::basic_istream< CharT, Traits > &, tribool &); } }