// https://issues.dlang.org/show_bug.cgi?id=19482 alias AliasSeq(T...) = T; extern (C++, "cppns") @("asd", 123) private deprecated immutable static foreach (i; 0 .. 1) { static assert(is(typeof(i) == int)); static assert(__traits(getLinkage, i) == "D"); static assert(__traits(isDeprecated, i) == false); static assert(__traits(getAttributes, i).length == 0); static assert(__traits(getCppNamespaces, i).length == 0); static assert(__traits(getVisibility, i) == "public"); extern int x; static assert(is(typeof(x) == immutable int)); static assert(__traits(getLinkage, x) == "C++"); static assert(__traits(isDeprecated, x) == true); static assert(__traits(getAttributes, x) == AliasSeq!("asd", 123)); static assert(__traits(getCppNamespaces, x) == AliasSeq!("cppns")); static assert(__traits(getVisibility, x) == "private"); } struct S { @disable static foreach (j; 0 .. 1) { int y; static assert(__traits(isDisabled, j) == false); static assert(__traits(isDisabled, S.y) == true); } } const static foreach (i, v; ['a']) { static assert(is(typeof(i) == size_t)); static assert(is(typeof(v) == char)); } const static foreach (i, s, f; Range()) { static assert(is(typeof(i) == int)); static assert(is(typeof(s) == string)); static assert(is(typeof(f) == float)); } struct Range { int i; auto front() { return Tup!(int, string, float)(123, "asd", 3.14f); } bool empty() { return i > 0; } void popFront() { ++i; } } struct Tup(T...) { T fields; alias fields this; }