#pragma once #include "modifier.h" #include "modifiers.h" namespace cpphibernate { namespace __impl { /* modifiers_t */ template using modifiers_t = hana::basic_tuple; /* modifiers_builder */ template struct modifiers_builder { template static constexpr decltype(auto) apply(T_args&&...) { static_assert(sizeof...(T_args) == -1, "Invalid parameters for make_modifiers(...)!"); } }; template struct modifiers_builder< mp::list, mp::enable_if_t< mp::is_true_v>...>>> { static constexpr decltype(auto) apply(T_args&&... args) { using modifiers_type = modifiers_t; return modifiers_type(std::forward(args)...); } }; /* is_modifiers_impl */ template struct is_modifiers_impl : mp::false_t { }; template struct is_modifiers_impl< modifiers_t, mp::enable_if_t>...>>> : mp::true_t { }; } /* is_modifiers */ template struct is_modifiers : public __impl::is_modifiers_impl { }; }