[Issue 13009] inout overload conflicts with non-inout when used via alias this

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Wed Aug 27 00:21:59 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=13009

Vladimir Panteleev <thecybershadow at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P2                          |P1
           Severity|blocker                     |regression

--- Comment #3 from Vladimir Panteleev <thecybershadow at gmail.com> ---
Today I stumbled upon this issue again, and discovered it's a regression.

One manifestation of this issue is that it prevents using static methods of
RefCounted's wrapped class.

Example:

////////// test.d /////////
import std.typecons;

struct SImpl
{
    static void open() {}
}

alias S = RefCounted!SImpl;

void main()
{
    S.open();
}
///////////////////////////

Works in DMD 2.063. In 2.064.2 and newer:

test.d(14): Error: std.typecons.RefCounted!(SImpl,
cast(RefCountedAutoInitialize)1).RefCounted.refCountedPayload called with
argument types () matches both:
C:\...\std\typecons.d(3893):     std.typecons.RefCounted!(SImpl,
cast(RefCountedAutoInitialize)1).RefCounted.refCountedPayload()
and:
C:\...\std\typecons.d(3885):     std.typecons.RefCounted!(SImpl,
cast(RefCountedAutoInitialize)1).RefCounted.refCountedPayload()

Introduced in https://github.com/D-Programming-Language/dmd/pull/2047

--


More information about the Digitalmars-d-bugs mailing list