View source code
Display the source code in std/traits.d from which this page was generated on
github.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Page wiki
View or edit the community-maintained wiki page associated with this page.
Module std.traits
Templates which extract information about types and symbols at compile time.
Functions
Name | Description |
---|---|
lvalueOf
|
Creates an lvalue or rvalue of type T for typeof(...) and
_traits(compiles, ...) purposes. No actual value is returned.
|
rvalueOf
|
Creates an lvalue or rvalue of type T for typeof(...) and
_traits(compiles, ...) purposes. No actual value is returned.
|
select
|
If cond is true , returns without evaluating . Otherwise, returns without evaluating .
|
Enums
Name | Description |
---|---|
FunctionAttribute
|
Returns the attributes attached to a function func .
|
ParameterStorageClass
|
Returns a tuple consisting of the storage classes of the parameters of a
function func .
|
Variadic
|
Determines what kind of variadic parameters function has. |
Templates
Name | Description |
---|---|
areAllSafe
|
Deprecated. It's badly named and provides redundant functionality. It was
also badly broken prior to 2.060 (bug# 8362), so any code which uses it
probably needs to be changed anyway. Please use allSatisfy(
instead. This will be removed in June 2015.
|
BaseClassesTuple
|
Get a TypeTuple of all base classes of this class,
in decreasing order. Interfaces are not included. BaseClassesTuple !Object yields the empty type tuple.
|
BaseTypeTuple
|
Get a TypeTuple of the base class and base interfaces of
this class or interface. BaseTypeTuple !Object returns
the empty type tuple.
|
CommonType
|
Get the type that all types can be implicitly converted to. Useful e.g. in figuring out an array type from a bunch of initializing values. Returns void if passed an empty list, or if the types have no common type. |
FieldNameTuple
|
Get as an expression tuple the names of the fields of a struct, class, or
union. This consists of the fields that take up memory space, excluding the
hidden fields like the virtual function table pointer or a context pointer
for nested types. If T isn't a struct, class, or union returns an
expression tuple with an empty string.
|
Fields
|
Get as a tuple the types of the fields of a struct, class, or union.
This consists of the fields that take up memory space,
excluding the hidden fields like the virtual function
table pointer or a context pointer for nested types.
If T isn't a struct, class, or union returns a tuple
with one element T .
|
fullyQualifiedName
|
Get the fully qualified name of a type or a symbol. Can act as an intelligent type/symbol to string converter. |
FunctionTypeOf
|
Get the function type from a callable object func .
|
hasAliasing
|
Returns true if and only if T 's representation includes at
least one of the following:
|
hasElaborateAssign
|
True if S or any type directly embedded in the representation of S
defines an elaborate assignment. Elaborate assignments are introduced by
defining opAssign(typeof(this)) or opAssign(ref typeof(this))
for a struct or when there is a compiler-generated opAssign .
|
hasElaborateCopyConstructor
|
True if S or any type embedded directly in the representation of S
defines an elaborate copy constructor. Elaborate copy constructors are
introduced by defining this(this) for a struct .
|
hasElaborateDestructor
|
True if S or any type directly embedded in the representation
of S defines an elaborate destructor. Elaborate destructors
are introduced by defining ~this() for a struct .
|
hasIndirections
|
Returns true if and only if T 's representation includes at
least one of the following:
|
hasNested
|
Determines whether T or any of its representation types
have a context pointer.
|
hasUDA
|
Determine if a symbol has a given user-defined attribute. |
hasUnsharedAliasing
|
Returns true if and only if T 's representation includes at
least one of the following:
|
ImplicitConversionTargets
|
Returns a tuple with all possible target types of an implicit conversion of a value of type T. |
InterfacesTuple
|
Get a TypeTuple of all interfaces directly or
indirectly inherited by this class or interface. Interfaces do not
repeat if multiply implemented. InterfacesTuple !Object
yields the empty type tuple.
|
isCallable
|
Detect whether T is a callable object , which can be called with the
function call operator (...) .
|
isCovariantWith
|
Determines whether the function type F is covariant with G , i.e.,
functions of the type F can override ones of the type G .
|
isDelegate
|
Detect whether symbol or type T is a delegate.
|
isExpressions
|
Check whether the tuple T is an expression tuple. An expression tuple only contains expressions. |
isFunctionPointer
|
Detect whether symbol or type T is a function pointer.
|
isSomeFunction
|
Detect whether symbol or type T is a function, a function pointer or a delegate.
|
isTypeTuple
|
Check whether the tuple T is a type tuple.
A type tuple only contains types.
|
Largest
|
Returns the largest type, i.e. T such that T.sizeof is the largest. If more than one type is of the same size, the leftmost argument of these in will be returned. |
mangledName
|
Returns the mangled name of symbol or type sth .
|
MemberFunctionsTuple
|
Returns a tuple of non-static functions with the name name declared in the
class or interface C . Covariant duplicates are shrunk into the most
derived one.
|
moduleName
|
Get the module name (including package) for the given symbol. |
mostNegative
|
Returns the most negative value of the numeric type T. |
packageName
|
Get the full package name for the given symbol. |
Parameters
|
Get, as a tuple, the types of the parameters to a function, a pointer
to function, a delegate, a struct with an opCall , a pointer to a
struct with an opCall , or a class with an opCall .
|
RepresentationTypeTuple
|
Get the primitive types of the fields of a struct or class, in topological order. |
ReturnType
|
Get the type of the return value from a function,
a pointer to function, a delegate, a struct
with an opCall, a pointer to a struct with an opCall,
or a class with an opCall . Please note that ref
is not part of a type, but the attribute of the function
(see template functionAttributes ).
|
SetFunctionAttributes
|
Constructs a new function or delegate type with the same basic signature as the given one, but different attributes (including linkage). |
TransitiveBaseTypeTuple
|
Get a TypeTuple of all base classes of T, in decreasing order, followed by T's
interfaces. TransitiveBaseTypeTuple !Object yields the
empty type tuple.
|
Unqual
|
Removes all qualifiers, if any, from type T .
|
Enum values
Name | Type | Description |
---|---|---|
arity
|
Returns the number of arguments of function func .
arity is undefined for variadic functions.
|
|
functionAttributes
|
Returns the attributes attached to a function func .
|
|
functionLinkage
|
Returns the calling convention of function as a string. | |
hasMember
|
Yields true if and only if T is an aggregate that defines
a symbol called name .
|
|
isAbstractClass
|
Detect whether T is a an abstract class.
|
|
isAbstractFunction
|
Detect whether T is a an abstract function.
|
|
isAggregateType
|
Detect whether type T is an aggregate type.
|
|
isArray
|
Detect whether type T is an array (static or dynamic; for associative
arrays see isAssociativeArray ).
|
|
isAssignable
|
Returns true iff a value of type Rhs can be assigned to a variable of
type Lhs .
|
|
isAssociativeArray
|
Detect whether T is an associative array type
|
|
isAutodecodableString
|
Detect whether type T is a string that will be autodecoded.
|
|
isBasicType
|
Detect whether T is a basic type (scalar type or void).
|
|
isBoolean
|
Detect whether T is a built-in boolean type.
|
|
isBuiltinType
|
Detect whether type T is a builtin type.
|
|
isDynamicArray
|
Detect whether type T is a dynamic array.
|
|
isFinalClass
|
Detect whether T is a a final class.
|
|
isFinalFunction
|
Detect whether T is a a final function.
|
|
isFloatingPoint
|
Detect whether T is a built-in floating point type.
|
|
isImplicitlyConvertible
|
Is From implicitly convertible to To ?
|
|
isInstanceOf
|
Returns true if T is an instance of the template S. | |
isIntegral
|
Detect whether T is a built-in integral type. Types bool ,
char , wchar , and dchar are not considered integral.
|
|
isIterable
|
Returns true if T can be iterated over using a foreach loop with
a single loop variable of automatically inferred type, regardless of how
the foreach loop is implemented. This includes ranges, structs/classes
that define opApply with a single loop variable, and builtin dynamic,
static and associative arrays.
|
|
isMutable
|
Returns true if T is not const or immutable. Note that isMutable is true for
string, or immutable(char)[], because the 'head' is mutable.
|
|
isNarrowString
|
Detect whether type T is a narrow string.
|
|
isNested
|
Determines whether T has its own context pointer.
T must be either class , struct , or union .
|
|
isNestedFunction
|
Determines whether function f requires a context pointer.
|
|
isNumeric
|
Detect whether T is a built-in numeric type (integral or floating
point).
|
|
isPointer
|
Detect whether type T is a pointer.
|
|
isSafe
|
true if func is @safe or @trusted .
|
|
isScalarType
|
Detect whether T is a scalar type (a built-in numeric, character or boolean type).
|
|
isSigned
|
Detect whether T is a built-in signed numeric type.
|
|
isSIMDVector
|
Detect whether type T is a SIMD vector type.
|
|
isSomeChar
|
Detect whether T is one of the built-in character types.
|
|
isSomeString
|
Detect whether T is one of the built-in string types.
|
|
isStaticArray
|
Detect whether type T is a static array.
|
|
isUnsafe
|
true if func is @system .
|
|
isUnsigned
|
Detect whether T is a built-in unsigned numeric type.
|
|
variadicFunctionStyle
|
Determines what kind of variadic parameters function has. |
Aliases
Name | Type | Description |
---|---|---|
classInstanceAlignment
|
maxAlignment!(void*,typeof(T.tupleof))
|
Returns class instance alignment. |
ConstOf
|
const(T)
|
ditto. |
CopyConstness
|
Unshared!(CopyTypeQualifiers!(FromType,ToType))
|
Returns the type of Target with the "constness" of Source . A type's constness
refers to whether it is const , immutable , or inout . If source has no constness, the
returned type will be the same as Target .
|
CopyTypeQualifiers
|
ModifyTypePreservingTQ!(T,FromType)
|
Copies type qualifiers from FromType to ToType .
|
EnumMembers
|
EnumSpecificMembers!(__traits(allMembers,E))
|
Retrieves the members of an enumerated type enum E .
|
FieldTypeTuple
|
Alternate name for FieldTypeTuple , kept for legacy compatibility.
|
|
ForeachType
|
ReturnType!(typeof((inoutintx=0){foreach(elem;T.init){returnelem;}assert(0);}))
|
Returns the inferred type of the loop variable when a variable of type T
is iterated over using a foreach loop with a single loop variable and
automatically inferred return type. Note that this may not be the same as
std.range.ElementType!Range in the case of narrow strings, or if T
has both opApply and a range interface.
|
getSymbolsByUDA
|
Filter!(hasSpecificUDA,TypeTuple!(symbol,staticMap!(StringToSymbol,__traits(allMembers,symbol))))
|
Gets all symbols within symbol that have the given user-defined attribute.
This is not recursive; it will not search for symbols within symbols such as
nested structs or unions.
|
getUDAs
|
Filter!(isDesiredUDA,__traits(getAttributes,symbol))
|
Gets the user-defined attributes of the given type from the given symbol. |
ImmutableOf
|
immutable(T)
|
ditto. |
InoutOf
|
inout(T)
|
Add specific qualifier to the given type T. |
isExpressionTuple
|
Alternate name for isExpressions , kept for legacy compatibility.
|
|
KeyType
|
K
|
Get the Key type of an Associative Array. |
OriginalType
|
ModifyTypePreservingTQ!(Impl,T)
|
Strips off all enum s from type T .
|
ParameterDefaults
|
Impl!()
|
Get, as a tuple, the default value of the parameters to a function symbol.
If a parameter doesn't have the default value, void is returned instead.
|
ParameterDefaultValueTuple
|
Alternate name for ParameterDefaults , kept for legacy compatibility.
|
|
ParameterIdentifierTuple
|
Impl!()
|
Get, as a tuple, the identifiers of the parameters to a function symbol. |
ParameterStorageClassTuple
|
demangleNextParameter!margs
|
Returns a tuple consisting of the storage classes of the parameters of a
function func .
|
ParameterTypeTuple
|
Alternate name for Parameters , kept for legacy compatibility.
|
|
pointerTarget
|
Deprecated. Please use PointerTarget instead. This will be
removed in June 2015.
|
|
PointerTarget
|
T
|
Returns the target type of a pointer. |
Select
|
T[!condition]
|
Aliases itself to T[0] if the boolean condition is true
and to T[1] otherwise.
|
SetFunctionAttributes
|
FunctionTypeOf!(SetFunctionAttributes!(T*,linkage,attrs))
|
Constructs a new function or delegate type with the same basic signature as the given one, but different attributes (including linkage). |
SharedConstOf
|
const(shared(T))
|
ditto. |
SharedInoutOf
|
inout(shared(T))
|
ditto. |
SharedOf
|
shared(T)
|
ditto. |
Signed
|
ModifyTypePreservingTQ!(Impl,OriginalType!T)
|
Returns the corresponding signed type for T. T must be a numeric integral type, otherwise a compile-time error occurs. |
TemplateArgsOf
|
Args
|
Returns a TypeTuple of the template arguments used to instantiate T .
|
TemplateOf
|
Base
|
Returns an alias to the template that T is an instance of.
|
Unsigned
|
ModifyTypePreservingTQ!(Impl,OriginalType!T)
|
Returns the corresponding unsigned type for T. T must be a numeric integral type, otherwise a compile-time error occurs. |
ValueType
|
V
|
Get the Value type of an Associative Array. |
Authors
Walter Bright,
Tomasz Stachowiak (
),
Andrei Alexandrescu,
Shin Fujishiro,
Robert Clipsham,
David Nadlinger,
Kenji Hara,
Shoichi Kato
isExpressions