https://issues.dlang.org/show_bug.cgi?id=17444
Issue ID: 17444
Summary: std.traits.isCallable doesn't recognize struct member
function if return type is 'auto'.
Product: D
Version: D2
Hardware: x86
OS: Windows
Status: NEW
Severity: normal
Priority: P1
Component: dmd
Assignee: [email protected]
Reporter: [email protected]
import std.traits : isCallable;
struct MyStruct
{
auto foo() { return MyStruct(); }
static if (isCallable!foo)
pragma(msg, "GOOD");
else
pragma(msg, "BAD");
}
Prints "GOOD" if foo returns 'MyStruct' instead of 'auto'.
Member function foo is actually usable in both cases.
I'm unsure whether this is a Phobos problem or a compiler problem.
Using DMD32 v2.074.0 or LDC2 v1.1.1 (which is based on DMD v2.071.2).
--