based

Opinionated utility library
git clone git://git.dimitrijedobrota.com/based.git
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING

add_rvalue_reference.hpp (541B)


0 #pragma once
2 #include "based/trait/type_identity.hpp"
4 namespace based::trait
5 {
7 namespace detail
8 {
10 // Note that “cv void&&” is a substitution failure
11 template<class T>
12 auto try_add(int) -> TypeIdentity<T&&>;
14 // Handle T = cv void case
15 template<class T>
16 auto try_add(...) -> TypeIdentity<T>;
18 template<class T>
19 struct AddRValueReferenceHelper : decltype(detail::try_add<T>(0))
20 {
21 };
23 } // namespace detail
25 template<class T>
26 using AddRValueReference = typename detail::AddRValueReferenceHelper<T>::Type;
28 } // namespace based::trait