42 #ifndef CUDA_KAT_REFERENCE_WRAPPER_HPP_ 43 #define CUDA_KAT_REFERENCE_WRAPPER_HPP_ 47 #include <type_traits> 64 KAT_HD
operator T& ()
const noexcept;
65 KAT_HD T&
get()
const noexcept;
67 template <
typename... ArgTypes>
68 KAT_HD
typename std::result_of<T&(ArgTypes&&...)>::type operator() (ArgTypes&&...)
const;
86 reinterpret_cast<const volatile char&>(v)
104 template <
typename T>
110 template <
typename T>
116 template <
typename T>
117 template <
typename... ArgTypes>
121 return *val(std::forward<ArgTypes>(args)...);
125 template <
typename T>
131 template <
typename T>
132 KAT_HD
void ref(
const T&&) =
delete;
134 template <
typename T>
137 return kat::ref(t.get());
140 template <
typename T>
146 template <
typename T>
147 KAT_HD
void cref(
const T&&) =
delete;
149 template <
typename T>
152 return kat::cref(t.get());
157 template <
typename T>
159 :
public std::false_type {};
161 template <
typename T>
163 :
public std::true_type {};
165 template <
typename T>
171 template <
typename T>
175 template <
typename T>
177 {
typedef T& type; };
179 template <
typename T>
181 {
typedef T& type; };
206 #endif // CUDA_KAT_REFERENCE_WRAPPER_HPP_ reference_wrapper
Definition: reference_wrapper.hpp:53
Definition: common.hpp:16
Definition: reference_wrapper.hpp:166
Definition: reference_wrapper.hpp:172
Basic type and macro definitions used throughout the KAT library.
An adaptation for host-and-device use of some of the standard C++ library's <utility> code...
Definition: reference_wrapper.hpp:158