8 #ifndef BC_TYPE_TRAITS_GET_H_ 9 #define BC_TYPE_TRAITS_GET_H_ 12 #include "../common.h" 13 #include <type_traits> 20 template<
class Arg,
class... Args>
BCINLINE 22 -> decltype(std::forward<Arg>(arg))
24 return std::forward<Arg>(arg);
27 template<
int Index,
class Arg,
class... Args>
BCINLINE 36 template<
int Index,
class... Args>
BCINLINE 37 auto get(Args&&... args)
43 template<
class... Args>
45 -> decltype(
get<
sizeof...(Args)-1>(std::forward<Args>(args)...))
47 return get<
sizeof...(Args)-1>(std::forward<Args>(args)...);
50 template<
class Arg,
class... Args>
52 -> decltype(std::forward<Arg>(arg))
54 return std::forward<Arg>(arg);
#define BCINLINE
Definition: common.h:96
Definition: constexpr_int.h:14
__host__ __device__ auto get_impl(Integer< 0 >, Arg &&arg, Args &&... args) -> decltype(std::forward< Arg >(arg))
Definition: get.h:21
auto get_first(Arg &&arg, Args &&... args) -> decltype(std::forward< Arg >(arg))
Definition: get.h:51
auto get_last(Args &&... args) -> decltype(get< sizeof...(Args) -1 >(std::forward< Args >(args)...))
Definition: get.h:44
The Evaluator determines if an expression needs to be greedily optimized.
Definition: algorithms.h:22