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

Simen Kjaeraas <simen.kja...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |simen.kja...@gmail.com

--- Comment #1 from Simen Kjaeraas <simen.kja...@gmail.com> ---
The fix implemented for issue 19105 is just plain wrong, as the issue isn't
fixed:

import std.traits;

struct A(Args...) {}

struct S1 {
    // Recursive template expansion
    alias C = A!( getSymbolsByUDA!(S1, A) );
}
struct S2 {
    // precompute the result:
    alias tmp = getSymbolsByUDA!(S2, A);
    // No recursive template expansion
    alias C = A!( getSymbolsByUDA!(S2, A) );
}

Reduced test case:

template test(alias T) {
    enum i = __traits(compiles, __traits(getMember, T, "C"));
    alias test = int;
}

struct A(Args...) {}

struct S1 {
    // Recursive template expansion
    alias C = A!(test!S1);
}
struct S2 {
    // No error
    alias a = test!S2;
    alias C = A!(test!S2);
}

--

Reply via email to