basedOpinionated utility library |
git clone git://git.dimitrijedobrota.com/based.git |
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |
add_lvalue_reference.hpp (541B)
0 #pragma once
2 #include "based/trait/type_identity.hpp"
4 namespace based::trait
5 {
7 namespace detail
8 {
10 template<class T> // Note that “cv void&” is a substitution failure
11 auto try_add(int) -> TypeIdentity<T&>;
13 template<class T> // Handle T = cv void case
14 auto try_add(...) -> TypeIdentity<T>;
16 template<class T>
17 struct AddLValueReferenceHelper : decltype(detail::try_add<T>(0))
18 {
19 };
21 } // namespace detail
23 template<class T>
24 using AddLValueReference = typename detail::AddLValueReferenceHelper<T>::Type;
26 } // namespace based::trait