Chris@16: //----------------------------------------------------------------------------- Chris@16: // boost blank.hpp header file Chris@16: // See http://www.boost.org for updates, documentation, and revision history. Chris@16: //----------------------------------------------------------------------------- Chris@16: // Chris@16: // Copyright (c) 2003 Chris@16: // Eric Friedman Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. (See Chris@16: // accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #ifndef BOOST_BLANK_HPP Chris@16: #define BOOST_BLANK_HPP Chris@16: Chris@16: #include "boost/blank_fwd.hpp" Chris@16: Chris@16: #if !defined(BOOST_NO_IOSTREAM) Chris@16: #include // for std::basic_ostream forward declare Chris@16: #include "boost/detail/templated_streams.hpp" Chris@16: #endif // BOOST_NO_IOSTREAM Chris@16: Chris@16: #include "boost/mpl/bool.hpp" Chris@16: #include "boost/type_traits/is_empty.hpp" Chris@16: #include "boost/type_traits/is_pod.hpp" Chris@16: #include "boost/type_traits/is_stateless.hpp" Chris@16: Chris@16: namespace boost { Chris@16: Chris@16: struct blank Chris@16: { Chris@16: }; Chris@16: Chris@16: // type traits specializations Chris@16: // Chris@16: Chris@16: template <> Chris@16: struct is_pod< blank > Chris@16: : mpl::true_ Chris@16: { Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct is_empty< blank > Chris@16: : mpl::true_ Chris@16: { Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct is_stateless< blank > Chris@16: : mpl::true_ Chris@16: { Chris@16: }; Chris@16: Chris@16: // relational operators Chris@16: // Chris@16: Chris@16: inline bool operator==(const blank&, const blank&) Chris@16: { Chris@16: return true; Chris@16: } Chris@16: Chris@16: inline bool operator<=(const blank&, const blank&) Chris@16: { Chris@16: return true; Chris@16: } Chris@16: Chris@16: inline bool operator>=(const blank&, const blank&) Chris@16: { Chris@16: return true; Chris@16: } Chris@16: Chris@16: inline bool operator!=(const blank&, const blank&) Chris@16: { Chris@16: return false; Chris@16: } Chris@16: Chris@16: inline bool operator<(const blank&, const blank&) Chris@16: { Chris@16: return false; Chris@16: } Chris@16: Chris@16: inline bool operator>(const blank&, const blank&) Chris@16: { Chris@16: return false; Chris@16: } Chris@16: Chris@16: // streaming support Chris@16: // Chris@16: #if !defined(BOOST_NO_IOSTREAM) Chris@16: Chris@16: BOOST_TEMPLATED_STREAM_TEMPLATE(E,T) Chris@16: inline BOOST_TEMPLATED_STREAM(ostream, E,T)& operator<<( Chris@16: BOOST_TEMPLATED_STREAM(ostream, E,T)& out Chris@16: , const blank& Chris@16: ) Chris@16: { Chris@16: // (output nothing) Chris@16: return out; Chris@16: } Chris@16: Chris@16: #endif // BOOST_NO_IOSTREAM Chris@16: Chris@16: } // namespace boost Chris@16: Chris@16: #endif // BOOST_BLANK_HPP