@@ -13,14 +13,15 @@ namespace Traits
1313 {
1414 bool isConst = false ;
1515 bool isVolatile = false ;
16- bool isRef = false ;
17- bool isRvalueRef = false ;
16+ bool isReferenceQualified = false ;
17+ bool isRvalueReferenceQualified = false ;
1818 bool isNoexcept = false ;
1919
2020 constexpr bool operator ==(const FunctionQualifiers& other) const noexcept
2121 {
22- return isConst == other.isConst && isVolatile == other.isVolatile && isRef == other.isRef &&
23- isRvalueRef == other.isRvalueRef && isNoexcept == other.isNoexcept ;
22+ return isConst == other.isConst && isVolatile == other.isVolatile &&
23+ isReferenceQualified == other.isReferenceQualified &&
24+ isRvalueReferenceQualified == other.isRvalueReferenceQualified && isNoexcept == other.isNoexcept ;
2425 }
2526 };
2627
@@ -72,15 +73,6 @@ namespace Traits
7273
7374 // / The function type as a std::function with decayed argument types (removes references and qualifiers).
7475 using StandardFunctionTypeDecayed = std::function<ReturnT(std::decay_t <Args>...)>;
75-
76- struct AsStdFunctionImpl
77- {
78- using type = std::function<ReturnT(Args...)>;
79- using DecayedType = std::function<ReturnT(std::decay_t <Args>...)>;
80- };
81-
82- using AsStdFunction = typename AsStdFunctionImpl::type;
83- using AsStdFunctionDecayed = typename AsStdFunctionImpl::DecayedType;
8476 };
8577
8678 /* *
@@ -125,34 +117,46 @@ namespace Traits
125117 namespace Detail
126118 {
127119 constexpr FunctionQualifiers cvQualified{.isConst = true , .isVolatile = true };
128- constexpr FunctionQualifiers constRef{.isConst = true , .isRef = true };
129- constexpr FunctionQualifiers volatileRef{.isVolatile = true , .isRef = true };
130- constexpr FunctionQualifiers cvRef{.isConst = true , .isVolatile = true , .isRef = true };
131- constexpr FunctionQualifiers constRvalueRef{.isConst = true , .isRvalueRef = true };
132- constexpr FunctionQualifiers volatileRvalueRef{.isVolatile = true , .isRvalueRef = true };
133- constexpr FunctionQualifiers cvRvalueRef{.isConst = true , .isVolatile = true , .isRvalueRef = true };
120+ constexpr FunctionQualifiers constRef{.isConst = true , .isReferenceQualified = true };
121+ constexpr FunctionQualifiers volatileRef{.isVolatile = true , .isReferenceQualified = true };
122+ constexpr FunctionQualifiers cvRef{.isConst = true , .isVolatile = true , .isReferenceQualified = true };
123+ constexpr FunctionQualifiers constRvalueRef{.isConst = true , .isRvalueReferenceQualified = true };
124+ constexpr FunctionQualifiers volatileRvalueRef{.isVolatile = true , .isRvalueReferenceQualified = true };
125+ constexpr FunctionQualifiers cvRvalueRef{
126+ .isConst = true ,
127+ .isVolatile = true ,
128+ .isRvalueReferenceQualified = true };
134129
135130 constexpr FunctionQualifiers constNoexcept{.isConst = true , .isNoexcept = true };
136131 constexpr FunctionQualifiers volatileNoexcept{.isVolatile = true , .isNoexcept = true };
137132 constexpr FunctionQualifiers cvNoexcept{.isConst = true , .isVolatile = true , .isNoexcept = true };
138- constexpr FunctionQualifiers refNoexcept{.isRef = true , .isNoexcept = true };
139- constexpr FunctionQualifiers rvalueRefNoexcept{.isRvalueRef = true , .isNoexcept = true };
140- constexpr FunctionQualifiers constRefNoexcept{.isConst = true , .isRef = true , .isNoexcept = true };
141- constexpr FunctionQualifiers volatileRefNoexcept{.isVolatile = true , .isRef = true , .isNoexcept = true };
133+ constexpr FunctionQualifiers refNoexcept{.isReferenceQualified = true , .isNoexcept = true };
134+ constexpr FunctionQualifiers rvalueRefNoexcept{.isRvalueReferenceQualified = true , .isNoexcept = true };
135+ constexpr FunctionQualifiers constRefNoexcept{
136+ .isConst = true ,
137+ .isReferenceQualified = true ,
138+ .isNoexcept = true };
139+ constexpr FunctionQualifiers volatileRefNoexcept{
140+ .isVolatile = true ,
141+ .isReferenceQualified = true ,
142+ .isNoexcept = true };
142143 constexpr FunctionQualifiers cvRefNoexcept{
143144 .isConst = true ,
144145 .isVolatile = true ,
145- .isRef = true ,
146+ .isReferenceQualified = true ,
147+ .isNoexcept = true };
148+ constexpr FunctionQualifiers constRvalueRefNoexcept{
149+ .isConst = true ,
150+ .isRvalueReferenceQualified = true ,
146151 .isNoexcept = true };
147- constexpr FunctionQualifiers constRvalueRefNoexcept{.isConst = true , .isRvalueRef = true , .isNoexcept = true };
148152 constexpr FunctionQualifiers volatileRvalueRefNoexcept{
149153 .isVolatile = true ,
150- .isRvalueRef = true ,
154+ .isRvalueReferenceQualified = true ,
151155 .isNoexcept = true };
152156 constexpr FunctionQualifiers cvRvalueRefNoexcept{
153157 .isConst = true ,
154158 .isVolatile = true ,
155- .isRvalueRef = true ,
159+ .isRvalueReferenceQualified = true ,
156160 .isNoexcept = true };
157161 }
158162
@@ -161,11 +165,11 @@ namespace Traits
161165 TRAITS_LIB_CREATE_SPECIALIZATION (volatile , {.isVolatile = true })
162166 TRAITS_LIB_CREATE_SPECIALIZATION (const volatile , Detail::cvQualified)
163167
164- TRAITS_LIB_CREATE_SPECIALIZATION (&, {.isRef = true })
168+ TRAITS_LIB_CREATE_SPECIALIZATION (&, {.isReferenceQualified = true })
165169 TRAITS_LIB_CREATE_SPECIALIZATION (const &, Detail::constRef)
166170 TRAITS_LIB_CREATE_SPECIALIZATION (volatile &, Detail::volatileRef)
167171 TRAITS_LIB_CREATE_SPECIALIZATION (const volatile &, Detail::cvRef)
168- TRAITS_LIB_CREATE_SPECIALIZATION (&&, {.isRvalueRef = true })
172+ TRAITS_LIB_CREATE_SPECIALIZATION (&&, {.isRvalueReferenceQualified = true })
169173 TRAITS_LIB_CREATE_SPECIALIZATION (const &&, Detail::constRvalueRef)
170174 TRAITS_LIB_CREATE_SPECIALIZATION (volatile &&, Detail::volatileRvalueRef)
171175 TRAITS_LIB_CREATE_SPECIALIZATION (const volatile &&, Detail::cvRvalueRef)
0 commit comments