1 //----------------------------------------------------------------------------- 2 // boost blank.hpp header file 3 // See http://www.boost.org for updates, documentation, and revision history. 4 //----------------------------------------------------------------------------- 5 // 6 // Copyright (c) 2003 7 // Eric Friedman 8 // 9 // Distributed under the Boost Software License, Version 1.0. (See 10 // accompanying file LICENSE_1_0.txt or copy at 11 // http://www.boost.org/LICENSE_1_0.txt) 12 13 #ifndef BOOST_BLANK_HPP 14 #define BOOST_BLANK_HPP 15 16 #include "boost/blank_fwd.hpp" 17 18 #if !defined(BOOST_NO_IOSTREAM) 19 #include <iosfwd> // for std::basic_ostream forward declare 20 #include "boost/detail/templated_streams.hpp" 21 #endif // BOOST_NO_IOSTREAM 22 23 #include "boost/type_traits/integral_constant.hpp" 24 #include "boost/type_traits/is_empty.hpp" 25 #include "boost/type_traits/is_pod.hpp" 26 #include "boost/type_traits/is_stateless.hpp" 27 28 namespace boost { 29 30 struct blank 31 { 32 }; 33 34 // type traits specializations 35 // 36 37 template <> 38 struct is_pod< blank > 39 : boost::true_type 40 { 41 }; 42 43 template <> 44 struct is_empty< blank > 45 : boost::true_type 46 { 47 }; 48 49 template <> 50 struct is_stateless< blank > 51 : boost::true_type 52 { 53 }; 54 55 // relational operators 56 // 57 58 inline bool operator==(const blank&, const blank&) 59 { 60 return true; 61 } 62 63 inline bool operator<=(const blank&, const blank&) 64 { 65 return true; 66 } 67 68 inline bool operator>=(const blank&, const blank&) 69 { 70 return true; 71 } 72 73 inline bool operator!=(const blank&, const blank&) 74 { 75 return false; 76 } 77 78 inline bool operator<(const blank&, const blank&) 79 { 80 return false; 81 } 82 83 inline bool operator>(const blank&, const blank&) 84 { 85 return false; 86 } 87 88 // streaming support 89 // 90 #if !defined(BOOST_NO_IOSTREAM) 91 92 BOOST_TEMPLATED_STREAM_TEMPLATE(E,T) 93 inline BOOST_TEMPLATED_STREAM(ostream, E,T)& operator<<( 94 BOOST_TEMPLATED_STREAM(ostream, E,T)& out 95 , const blank& 96 ) 97 { 98 // (output nothing) 99 return out; 100 } 101 102 #endif // BOOST_NO_IOSTREAM 103 104 } // namespace boost 105 106 #endif // BOOST_BLANK_HPP 107