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.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.
enum isIterable(T)
= is(typeof(()
{
foreach (elem; T .init)
{
}
}
));
Example
struct OpApply
{
int opApply(scope int delegate(ref uint) dg) { assert(0); }
}
struct Range
{
@property uint front() { assert(0); }
void popFront() { assert(0); }
enum bool empty = false;
}
static assert( isIterable!(uint[]));
static assert( isIterable!OpApply);
static assert( isIterable!(uint[string]));
static assert( isIterable!Range);
static assert(!isIterable!uint);
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.