Enum member isRefDecl
True if it's a ref decleration. This applies to parameters and functions
enum isRefDecl(T...)
= [__traits(getFunctionAttributes, T[0])] .canFind("ref");
Example
bool checkRefParam()(auto ref int i) {
return isRefDecl!i;
}
bool checkRefReturn() {
ref int f(ref int i) {
return i;
}
return isRefDecl!f;
}
bool checkMemberFunciton() {
static struct S {
int i;
ref int value() return { return i; }
}
S s;
return isRefDecl!(s .value) && isRefDecl!(S .value);
}
int i;
assert( checkRefParam(i));
static assert(!checkRefParam(3));
static assert( checkRefReturn());
static assert( checkMemberFunciton());
static assert(!isRefDecl!int);
static assert(!isRefDecl!i);