@@ -10,63 +10,65 @@ struct EnableBitMaskOperators
10
10
};
11
11
12
12
template <typename TEnum>
13
- typename std::enable_if< EnableBitMaskOperators<TEnum>::enable, TEnum>::type
14
- operator &(TEnum lhs, TEnum rhs)
13
+ requires EnableBitMaskOperators<TEnum>::enable
14
+ TEnum operator &(TEnum lhs, TEnum rhs)
15
15
{
16
16
return static_cast <TEnum> (static_cast <typename std::underlying_type<TEnum>::type>(lhs) & static_cast <typename std::underlying_type<TEnum>::type>(rhs));
17
17
}
18
18
19
19
template <typename TEnum>
20
- typename std::enable_if< EnableBitMaskOperators<TEnum>::enable, TEnum>::type
21
- operator |(TEnum lhs, TEnum rhs)
20
+ requires EnableBitMaskOperators<TEnum>::enable
21
+ TEnum operator |(TEnum lhs, TEnum rhs)
22
22
{
23
23
return static_cast <TEnum> (static_cast <typename std::underlying_type<TEnum>::type>(lhs) | static_cast <typename std::underlying_type<TEnum>::type>(rhs));
24
24
}
25
25
26
26
template <typename TEnum>
27
- typename std::enable_if< EnableBitMaskOperators<TEnum>::enable, TEnum>::type
28
- operator ^(TEnum lhs, TEnum rhs)
27
+ requires EnableBitMaskOperators<TEnum>::enable
28
+ TEnum operator ^(TEnum lhs, TEnum rhs)
29
29
{
30
30
return static_cast <TEnum> (static_cast <typename std::underlying_type<TEnum>::type>(lhs) ^ static_cast <typename std::underlying_type<TEnum>::type>(rhs));
31
31
}
32
32
33
33
template <typename TEnum>
34
- typename std::enable_if< EnableBitMaskOperators<TEnum>::enable, TEnum>::type
35
- operator ~(TEnum rhs)
34
+ requires EnableBitMaskOperators<TEnum>::enable
35
+ TEnum operator ~(TEnum rhs)
36
36
{
37
37
return static_cast <TEnum> (~static_cast <typename std::underlying_type<TEnum>::type>(rhs));
38
38
}
39
39
40
40
template <typename TEnum>
41
- typename std::enable_if< EnableBitMaskOperators<TEnum>::enable, TEnum>::type&
42
- operator &=(TEnum& lhs, TEnum rhs)
41
+ requires EnableBitMaskOperators<TEnum>::enable
42
+ TEnum& operator &=(TEnum& lhs, TEnum rhs)
43
43
{
44
44
lhs = static_cast <TEnum> (static_cast <typename std::underlying_type<TEnum>::type>(lhs) & static_cast <typename std::underlying_type<TEnum>::type>(rhs));
45
45
return lhs;
46
46
}
47
47
48
48
template <typename TEnum>
49
- typename std::enable_if< EnableBitMaskOperators<TEnum>::enable, TEnum>::type&
50
- operator |=(TEnum& lhs, TEnum rhs)
49
+ requires EnableBitMaskOperators<TEnum>::enable
50
+ TEnum& operator |=(TEnum& lhs, TEnum rhs)
51
51
{
52
52
lhs = static_cast <TEnum> (static_cast <typename std::underlying_type<TEnum>::type>(lhs) | static_cast <typename std::underlying_type<TEnum>::type>(rhs));
53
53
return lhs;
54
54
}
55
55
56
56
template <typename TEnum>
57
- typename std::enable_if< EnableBitMaskOperators<TEnum>::enable, TEnum>::type&
58
- operator ^=(TEnum& lhs, TEnum rhs)
57
+ requires EnableBitMaskOperators<TEnum>::enable
58
+ TEnum& operator ^=(TEnum& lhs, TEnum rhs)
59
59
{
60
60
lhs = static_cast <TEnum> (static_cast <typename std::underlying_type<TEnum>::type>(lhs) ^ static_cast <typename std::underlying_type<TEnum>::type>(rhs));
61
61
return lhs;
62
62
}
63
63
64
- template <typename TEnum, typename = std::enable_if_t <EnableBitMaskOperators<TEnum>::enable>>
64
+ template <typename TEnum>
65
+ requires EnableBitMaskOperators<TEnum>::enable
65
66
constexpr bool operator ==(TEnum lhs, std::underlying_type_t <TEnum> rhs)
66
67
{
67
68
return static_cast <std::underlying_type_t <TEnum>>(lhs) == rhs;
68
69
}
69
- template <typename TEnum, typename = std::enable_if_t <EnableBitMaskOperators<TEnum>::enable>>
70
+ template <typename TEnum>
71
+ requires EnableBitMaskOperators<TEnum>::enable
70
72
constexpr bool operator !=(TEnum lhs, std::underlying_type_t <TEnum> rhs)
71
73
{
72
74
return static_cast <std::underlying_type_t <TEnum>>(lhs) != rhs;
@@ -82,43 +84,43 @@ struct EnableEnumIterators
82
84
};
83
85
84
86
template <typename TEnum>
85
- typename std::enable_if< EnableEnumIterators<TEnum>::enable, TEnum>::type&
86
- operator ++(TEnum& lhs)
87
+ requires EnableEnumIterators<TEnum>::enable
88
+ TEnum& operator ++(TEnum& lhs)
87
89
{
88
90
lhs = static_cast <TEnum>(static_cast <typename std::underlying_type<TEnum>::type>(lhs) + 1 );
89
91
return lhs;
90
92
}
91
93
92
94
template <typename TEnum>
93
- typename std::enable_if< EnableEnumIterators<TEnum>::enable, TEnum>::type
94
- operator *(TEnum rhs)
95
+ requires EnableEnumIterators<TEnum>::enable
96
+ TEnum operator *(TEnum rhs)
95
97
{
96
98
return rhs;
97
99
}
98
100
99
101
template <typename TEnum>
100
- typename std::enable_if< EnableEnumIterators<TEnum>::enable, TEnum>::type
101
- begin (TEnum value)
102
+ requires EnableEnumIterators<TEnum>::enable
103
+ TEnum begin (TEnum value)
102
104
{
103
105
return EnableEnumIterators<TEnum>::begin;
104
106
}
105
107
106
108
template <typename TEnum>
107
- typename std::enable_if< EnableEnumIterators<TEnum>::enable, TEnum>::type
108
- rbegin (TEnum value)
109
+ requires EnableEnumIterators<TEnum>::enable
110
+ TEnum rbegin (TEnum value)
109
111
{
110
112
return EnableEnumIterators<TEnum>::rbegin;
111
113
}
112
114
113
115
template <typename TEnum>
114
- typename std::enable_if< EnableEnumIterators<TEnum>::enable, TEnum>::type
115
- end (TEnum r) {
116
+ requires EnableEnumIterators<TEnum>::enable
117
+ TEnum end (TEnum r) {
116
118
return EnableEnumIterators<TEnum>::end;
117
119
}
118
120
119
121
template <typename TEnum>
120
- typename std::enable_if< EnableEnumIterators<TEnum>::enable, TEnum>::type
121
- rend (TEnum r) {
122
+ requires EnableEnumIterators<TEnum>::enable
123
+ TEnum rend (TEnum r) {
122
124
return EnableEnumIterators<TEnum>::rend;
123
125
}
124
126
@@ -129,4 +131,4 @@ rend(TEnum r) {
129
131
static const x end = static_cast <x>(static_cast <typename std::underlying_type<x>::type>(last_value) + 1 );\
130
132
static const x rend = static_cast <x>(static_cast <typename std::underlying_type<x>::type>(first_value) - 1 );\
131
133
};
132
- // todo: rend type must be signed?
134
+ // todo: rend type must be signed?
0 commit comments