View source code
Display the source code in std/traits.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
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.
Enum member std.traits.isAggregateType
Detect whether type T
is an aggregate type.
enum isAggregateType(T)
= is(T == struct) || is(T == union) || is(T == class) || is(T == interface);
Example
class C;
union U;
struct S;
interface I;
static assert( isAggregateType!C);
static assert( isAggregateType!U);
static assert( isAggregateType!S);
static assert( isAggregateType!I);
static assert(!isAggregateType!void);
static assert(!isAggregateType!string);
static assert(!isAggregateType!(int[]));
static assert(!isAggregateType!(C[string]));
static assert(!isAggregateType!(void delegate(int)));
}
/**
* Returns <code class="lang-d"><span class="kwd">true</span></code> if T can be iterated over using a <code class="lang-d"><span class="kwd">foreach</span></code> loop with
* a single loop variable of automatically inferred type, regardless of how
* the <code class="lang-d"><span class="kwd">foreach</span></code> loop is implemented. This includes ranges, structs/classes
* that define <code class="lang-d"><span class="pln">opApply</span></code> with a single loop variable, and builtin dynamic,
* static and associative arrays.
*/
enum bool isIterable(T) = is(typeof({ foreach (elem; T .init) {}
Application output
Running...
Authors
Walter Bright,
Tomasz Stachowiak (isExpressions
),
Andrei Alexandrescu,
Shin Fujishiro,
Robert Clipsham,
David Nadlinger,
Kenji Hara,
Shoichi Kato
License
Copyright © 1999-2018 by the D Language Foundation | Page generated by ddox.