#ifndef CTTI_MODEL_HPP #define CTTI_MODEL_HPP #include #include #include namespace ctti { template struct model { using symbols = ctti::meta::list; }; template ctti::model<> ctti_model(ctti::type_tag); namespace detail { template struct get_model { using type = decltype(ctti_model(ctti::type_tag())); }; template struct get_model> { using type = typename T::ctti_model; }; } template using get_model = typename ctti::detail::get_model::type; template struct has_model : public ctti::meta::bool_< (ctti::meta::list_size>() > 0) > {}; } #endif // CTTI_MODEL_HPP