#pragma once #include #include namespace fc { using std::size_t; struct true_type { enum _value { value = 1 }; }; struct false_type { enum _value { value = 0 }; }; namespace detail { template fc::true_type is_class_helper(void(T::*)()); template fc::false_type is_class_helper(...); } template struct is_class { typedef decltype(detail::is_class_helper(0)) type; enum value_enum { value = type::value }; }; }