//https://issues.dlang.org/show_bug.cgi?id=19203 | |
struct BoolWithErr { | |
bool b; | |
string error; | |
alias b this; | |
} | |
struct Foo { | |
int popBack() { return 0; } | |
} | |
struct Bar {} | |
template hasPopBack(T) { | |
static if (!is(typeof(T.init.popBack))) | |
enum hasPopBack = BoolWithErr(false, T.stringof~" does not have popBack"); | |
else | |
enum hasPopBack = BoolWithErr(true,""); | |
} | |
void test() | |
{ | |
static assert( hasPopBack!Foo); | |
static assert(!hasPopBack!Bar); | |
static assert( hasPopBack!Foo && !hasPopBack!Bar); | |
} |