blob: aab39a43f5ad735bc2a00c88098bbae91154bedc [file] [log] [blame]
Jeff Thompsona28eed82013-08-22 16:21:10 -07001//-----------------------------------------------------------------------------
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 "ndnboost/blank_fwd.hpp"
17
18#if !defined(BOOST_NO_IOSTREAM)
19#include <iosfwd> // for std::basic_ostream forward declare
20#include "ndnboost/detail/templated_streams.hpp"
21#endif // BOOST_NO_IOSTREAM
22
23#include "ndnboost/mpl/bool.hpp"
24#include "ndnboost/type_traits/is_empty.hpp"
25#include "ndnboost/type_traits/is_pod.hpp"
26#include "ndnboost/type_traits/is_stateless.hpp"
27
28namespace ndnboost {
29
30struct blank
31{
32};
33
34// type traits specializations
35//
36
37template <>
38struct is_pod< blank >
39 : mpl::true_
40{
41};
42
43template <>
44struct is_empty< blank >
45 : mpl::true_
46{
47};
48
49template <>
50struct is_stateless< blank >
51 : mpl::true_
52{
53};
54
55// relational operators
56//
57
58inline bool operator==(const blank&, const blank&)
59{
60 return true;
61}
62
63inline bool operator<=(const blank&, const blank&)
64{
65 return true;
66}
67
68inline bool operator>=(const blank&, const blank&)
69{
70 return true;
71}
72
73inline bool operator!=(const blank&, const blank&)
74{
75 return false;
76}
77
78inline bool operator<(const blank&, const blank&)
79{
80 return false;
81}
82
83inline bool operator>(const blank&, const blank&)
84{
85 return false;
86}
87
88// streaming support
89//
90#if !defined(BOOST_NO_IOSTREAM)
91
92BOOST_TEMPLATED_STREAM_TEMPLATE(E,T)
93inline 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 ndnboost
105
106#endif // BOOST_BLANK_HPP