18 using namespace Udon::Traits;
24 template <
typename... Args>
27 return argsUnpack(std::forward<Args>(args)...);
32 template <
typename Head,
typename... Tail>
33 constexpr ResultType argsUnpack(Head&& head, Tail&&... tail)
const noexcept
37 return Test<RemoveReferenceT<Head>>::test(*
this, std::forward<Head>(head)) and
38 argsUnpack(std::forward<Tail>(tail)...);
42 constexpr ResultType argsUnpack() const noexcept {
return true; }
47 template <
typename T,
typename =
void>
50 static constexpr bool test(...) {
return false; }
54 template <
typename Arithmetic>
57 static constexpr bool test(...) {
return true; }
61 template <
typename Enum>
64 static constexpr bool test(...) {
return true; }
68 template <
typename Array>
79 template <
typename Enumerable>
85 return e.enumerate(tester);
97 : std::integral_constant<bool, Impl::IsSerializableImpl{}(RemoveReferenceT<T>{})>
Definition CanUtility.hpp:11
Definition SerializerTraits.hpp:93
std::is_enum< T > IsEnum
Definition Typedef.hpp:49
std::is_arithmetic< T > IsArithmetic
Definition Typedef.hpp:43
EnableIfT< Test, void > EnableIfVoidT
Definition Typedef.hpp:69
std::is_array< T > IsArray
Definition Typedef.hpp:52
CanBusTeensy< Bus > * CanBusTeensy< Bus >::self
Definition CanBusTeensy.hpp:275
static constexpr bool test(...)
Definition SerializerTraits.hpp:57
static constexpr bool test(const IsSerializableImpl &self, T &&array)
Definition SerializerTraits.hpp:72
static constexpr bool test(...)
Definition SerializerTraits.hpp:64
static constexpr bool test(const IsSerializableImpl &tester, T &&e)
Definition SerializerTraits.hpp:83
Definition SerializerTraits.hpp:49
static constexpr bool test(...)
Definition SerializerTraits.hpp:50
Definition SerializerTraits.hpp:21
constexpr ResultType operator()(Args &&... args) const noexcept
Definition SerializerTraits.hpp:25
bool ResultType
Definition SerializerTraits.hpp:22
T に enumerate(f) が存在するかどうかを判定する
Definition HasMemberFunction.hpp:135
T が シリアライズ可能か判定する
Definition SerializerTraits.hpp:98