28 template <
typename X,
typename = decltype(X())>
static yes test(
X*);
30 template <
typename X>
static no test(...);
32 static constexpr nbool is =
sizeof(
decltype(
test<T>(
nullptr))) ==
sizeof(
yes);
44 static inline constexpr nbool is =
sizeof(_foo((
T*) 0)) ==
sizeof(
yes);
52 template <
typename T,
typename super>
54 static inline constexpr nbool is = std::is_base_of<super, T>::value;
57 template <
typename T,
typename super>
struct tifSub<
T&, super> {
58 static inline constexpr nbool is = std::is_base_of<super, T>::value;
61 template <
typename T,
typename super>
struct tifSub<
T, super&> {
62 static inline constexpr nbool is = std::is_base_of<super, T>::value;
65 template <
typename T,
typename super>
struct tifSub<
T&, super&> {
66 static inline constexpr nbool is = std::is_base_of<super, T>::value;
84 static inline constexpr nbool is =
false;
88 static inline constexpr nbool is =
true;
101 typedef typename T::super super;
110 static void* make() {
return nullptr; }
114 static void* make() {
return (
void*)
new T(); }
133 static const nchar* getRawName() {
return typeid(
T).
name(); }
135 static std::string getName() {
136 std::string ret = platformAPI::filterDemangle(getRawName());
152 static inline constexpr nbool is =
false;
156 static inline constexpr nbool is =
true;
169 using is =
typename T::metaType;
172 template <
typename T,
typename...
Es>
using areBaseOfT = std::conjunction<std::is_base_of<T, Es>...>;
Root base class for the type hierarchy.
Definition adam.hpp:34
Core class for runtime type information in byeol language.
Definition type.hpp:100
Rich logging support with polymorphic type conversion.
Definition richLog.hpp:34
Helper struct for SFINAE detection patterns.
Definition rtti.hpp:74
Adaptive super type selector.
Definition rtti.hpp:96
Type trait to check if type has default constructor.
Definition rtti.hpp:27
Type trait to check if type has super typedef.
Definition rtti.hpp:83
Type trait to check if T is subclass of super.
Definition rtti.hpp:53
Type trait to check if type is a template specialization.
Definition rtti.hpp:40
Instance factory for type creation.
Definition rtti.hpp:109
Template name getter for type introspection.
Definition rtti.hpp:132