Returns template parameters of T.
Determines the template T is an instance of.
If T is a type, constructs its default value, otherwise $(D_PSYMBOL evalUDA) aliases itself to T.
Attributes can be attached to a function.
Returns all the base classes of T, the direct parent class comes first, $(D_PSYMBOL Object) ist the last one.
Returns a tuple of base classes and interfaces of T.
Returns all members of $(D_KEYWORD enum) T.
Returns the types of all members of T.
Determines the type of the callable F.
Returns all the interfaces T inherits from.
Returns a tuple with default values of the parameters to F.
Returns a string array with all parameter names of a function.
Returns a tuple with parameter types of a function.
Determines the return type of the callable F.
Returns a tuple of all base classes and interfaces of T.
Determines whether all Types are the same.
Different than T.alignof, which is the same for all class types, $(D_PSYMBOL classInstanceOf) determines the alignment of the class instance and not of its reference.
Retrieves the attributes of the function F.
Returns a compile-time tuple of user-defined attributes (UDA) attached to symbol.
Determines whether T has an elaborate assign.
Determines whether T has an elaborate postblit constructor.
Determines whether T has an elaborate destructor.
Determines whether a function has attribute.
Determines whether the type T has a static method named member.
Determines whether symbol has user-defined attribute attr attached to it.
Tests whether pred(T) can be used as condition in an $(D_KEYWORD if)-statement or a ternary operator.
Determines whether T is an array type (dynamic or static, but not an associative one).
Tests whether a value of type Rhs can be assigned to a variable of type Lhs.
Determines whether T is an associative array type.
Delegate stores the function pointer and function context.
Tells whether Args contains only expressions.
$(D_PSYMBOL isFunction) returns $(D_KEYWORD true) only for plain functions, not function pointers or delegates. Use $(D_PSYMBOL isFunctionPointer) or $(D_PSYMBOL isDelegate) to detect them or $(D_PSYMBOL isSomeFunction) for detecting a function of any type.
Function pointer is a pointer to a function. So a simple function is not a function pointer, but getting the address of such function returns a function pointer.
Tests whether T is an inner class, i.e. a class nested inside another class.
Determines whether T is mutable, i.e. has one of the following qualifiers or a combination of them:
Determines whether T is a nested type, i.e. $(D_KEYWORD class), $(D_KEYWORD struct) or $(D_KEYWORD union), which internally stores a context pointer.
Determines whether T is a pointer type.
Determines whether T is a static array type.
Returns the minimum value of type T. In contrast to T.min this template works with floating point and complex types as well.
Returns the size in bytes of the state that needs to be allocated to hold an object of type T.
Determines whether T defines a symbol member.
Determines whether T is an abstract class.
Determines whether T is an abstract method.
Determines whether T is an aggregate type.
Determines whether T is a basic type.
Determines whether T is a boolean type, i.e. $(D_KEYWORD bool).
Determines whether T is a built-in type.
Determines whether T is a complex type.
Determines whether the type T is copyable.
Determines whether T is a dynamic array type.
Determines whether values of type T can be compared for equality, i.e. using == or != binary operators.
Determines whether T is a final class.
Determines whether T is a final method.
Determines whether T is a floating point type.
Checks whether From is implicitly (without explicit $(D_KEYWORD cast)) to To.
Tests whether I is an instance of template T.
Determines whether T is an integral type.
Determines whether T is a narrow string, i.e. consists of $(D_KEYWORD char) or $(D_KEYWORD wchar).
Determines whether T is a nested function.
Determines whether T is a numeric (floating point, integral or complex) type. *
Determines whether values of type T can be compared for ordering, i.e. using >, >=, < or <= binary operators.
Determines whether T is a polymorphic type, i.e. a $(D_KEYWORD class) or an $(D_KEYWORD interface).
Determines whether T is a scalar type.
Determines whether T is a signed numeric type.
Determines whether T is a character type.
Determines whether T is a string, i.e. consists of $(D_KEYWORD char), $(D_KEYWORD wchar) or $(D_KEYWORD dchar).
Checks whether T is a type, same as is(T) does.
Determines whether Args contains only types.
Determines whether T is an unsigned numeric type.
Determines whether T is a wide string, i.e. consists of $(D_KEYWORD dchar).
Returns the mangled name of the symbol T.
Eugene Wissner 2017-2020.
Type traits.
Templates in this module are used to obtain type information at compile time.