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
36 return Test<RemoveReferenceT<Head>>::test(*
this, std::forward<Head>(head)) and
37 argsUnpack(std::forward<Tail>(tail)...);
41 constexpr ResultType argsUnpack() const noexcept {
return true; }
46 template <
typename T,
typename =
void>
49 static constexpr bool test(...) {
return false; }
53 template <
typename Arithmetic>
56 static constexpr bool test(...) {
return true; }
60 template <
typename Enum>
63 static constexpr bool test(...) {
return true; }
67 template <
typename Array>
78 template <
typename Enumerable>
84 return e.enumerate(tester);
96 : std::integral_constant<bool, Impl::IsSerializableImpl{}(RemoveReferenceT<T>{})>
Definition SerializerTraits.hpp:92
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
static constexpr bool test(...)
Definition SerializerTraits.hpp:56
static constexpr bool test(const IsSerializableImpl &self, T &&array)
Definition SerializerTraits.hpp:71
static constexpr bool test(...)
Definition SerializerTraits.hpp:63
static constexpr bool test(const IsSerializableImpl &tester, T &&e)
Definition SerializerTraits.hpp:82
Definition SerializerTraits.hpp:48
static constexpr bool test(...)
Definition SerializerTraits.hpp:49
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:97