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