2
3
4
5
6
7
8
9
10
11
12
13
14
15
17#ifndef MIR_INT_WRAPPER_H_
18#define MIR_INT_WRAPPER_H_
24template<
typename Tag,
typename ValueType=
int>
30 explicit constexpr IntWrapper(ValueType value) : value(value) {}
31 ValueType
constexpr as_value()
const {
return value; }
37template<
typename Tag,
typename ValueType>
38std::ostream& operator<<(std::ostream& out,
IntWrapper<Tag,ValueType>
const& value)
40 out << value.as_value();
44template<
typename Tag,
typename ValueType>
47 return lhs.as_value() == rhs.as_value();
50template<
typename Tag,
typename ValueType>
53 return lhs.as_value() != rhs.as_value();
56template<
typename Tag,
typename ValueType>
59 return lhs.as_value() <= rhs.as_value();
62template<
typename Tag,
typename ValueType>
65 return lhs.as_value() >= rhs.as_value();
68template<
typename Tag,
typename ValueType>
71 return lhs.as_value() < rhs.as_value();
78template<
typename Tag,
typename ValueType>
84 return self(id.as_value()
);
Definition: int_wrapper.h:26
constexpr IntWrapper(ValueType value)
Definition: int_wrapper.h:30
ValueType constexpr as_value() const
Definition: int_wrapper.h:31
constexpr IntWrapper()
Definition: int_wrapper.h:28
constexpr bool operator<=(IntWrapper< Tag, ValueType > const &lhs, IntWrapper< Tag, ValueType > const &rhs)
Definition: int_wrapper.h:57
constexpr bool operator!=(IntWrapper< Tag, ValueType > const &lhs, IntWrapper< Tag, ValueType > const &rhs)
Definition: int_wrapper.h:51
constexpr bool operator>=(IntWrapper< Tag, ValueType > const &lhs, IntWrapper< Tag, ValueType > const &rhs)
Definition: int_wrapper.h:63
constexpr bool operator==(IntWrapper< Tag, ValueType > const &lhs, IntWrapper< Tag, ValueType > const &rhs)
Definition: int_wrapper.h:45
constexpr bool operator<(IntWrapper< Tag, ValueType > const &lhs, IntWrapper< Tag, ValueType > const &rhs)
Definition: int_wrapper.h:69
std::hash< int > self
Definition: int_wrapper.h:81
constexpr std::size_t operator()(::mir::IntWrapper< Tag, ValueType > const &id) const
Definition: int_wrapper.h:82