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: nob...@puremagic.com
          Reporter: dario.schia...@gmail.com

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).

--

Reply via email to