9 #define SCL_TYPECHECK(fn) \ 11 inline constexpr bool fn(){\ 12 return std::fn<T>::value;\ 15 #define SCL_TYPECHECK_COMPOUND(fn) \ 16 template <class T, class U>\ 17 inline constexpr bool fn(){\ 18 return std::fn<T, U>::value;\ 21 #define SCL_TYPECHECK_WITH_VARGS(fn)\ 22 template <class T, class... Args>\ 23 inline constexpr bool fn(){\ 24 return std::fn<T, Args...>::value;\ 27 #define SCL_TYPECHECK_FN(fn)\ 28 template <class F, class... Args>\ 29 inline constexpr bool fn(){\ 30 return std::fn<F, Args...>::value;\ 33 #define SCL_TYPECHECK_FN_R(fn)\ 34 template <class R, class F, class... Args>\ 35 inline constexpr bool fn(){\ 36 return std::fn<R, F, Args...>::value;\ 75 #ifdef SCL_ENABLE_DEPRECATED_TYPECHECKS 125 return is_copy_assignable<T>() && is_copy_constructible<T>();
135 return is_move_assignable<T>() && is_move_constructible<T>();
145 return is_trivially_move_assignable<T>() && is_trivially_move_constructible<T>();
159 template <
class F,
class... Args>
162 return exists<decltype(std::declval<F>()(std::declval<Args>()...))>();
174 #undef SCL_TYPECHECK_COMPOUND 175 #undef SCL_TYPECHECK_WITH_VARGS 176 #undef SCL_TYPECHECK_FN 177 #undef SCL_TYPECHECK_FN_R
#define SCL_TYPECHECK_COMPOUND(fn)
#define SCL_TYPECHECK(fn)
Global namespace of the SCL.
#define SCL_TYPECHECK_FN_R(fn)
#define SCL_TYPECHECK_FN(fn)
#define SCL_TYPECHECK_WITH_VARGS(fn)