@trusting generic functions
Era Scarecrow via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat May 28 07:54:13 PDT 2016
On Saturday, 28 May 2016 at 14:11:56 UTC, Lodovico Giaretta wrote:
> On Saturday, 28 May 2016 at 14:01:35 UTC, Era Scarecrow wrote:
>> Do you still want the template i'm building?
>
> Thank you very much for your effort.
> Please if you don't need it, don't make it, because I don't
> know if I'll use it.
Well here's what i got. Maybe someone else will tell me how i
did this wrong...
[code]
import std.traits;
template areAllFunctionsSafe(T)
if (!isNested!T) { //nested may be lifted later when i fix this
enum areAllFunctionsSafe = check();
bool check() {
foreach(member; __traits(allMembers, T)) {
static if(isCallable!(__traits(getMember, T, member))) {
if (!isSafe!(__traits(getMember, T, member)))
return false;
}
}
return true;
}
}
unittest {
static struct S {
int y;
void foo() @safe {}
void bar() @safe {}
}
static struct S2 {
int y;
void foo() @safe {}
void bar() {}
}
assert(areAllFunctionsSafe!S);
assert(!areAllFunctionsSafe!S2);
}
[/code]
More information about the Digitalmars-d-learn
mailing list