[Issue 8129] Cannot deduce template function when inferring labmda parameters over partially specialized IFTI call.

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sat Jun 2 21:11:55 PDT 2012


http://d.puremagic.com/issues/show_bug.cgi?id=8129


Kenji Hara <k.hara.pg at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |rejects-valid
            Summary|Cannot deduce template      |Cannot deduce template
                   |function when using UFCS    |function when inferring
                   |and having a delegate(T) as |labmda parameters over
                   |first argument and an empty |partially specialized IFTI
                   |function.                   |call.


--- Comment #1 from Kenji Hara <k.hara.pg at gmail.com> 2012-06-02 21:13:50 PDT ---
This is not UFCS issue. Proper function call shows same errors.
In my opinion, the cause of problem is the inference of lambda parameters over
partially specialized IFTI call.

----
class X {}
class A {}
class B : A {}

void foo(T : A)(X x) {}
void foo(T : A)(X x, void function (T) block) {}

void main()
{
    auto x = new X;
    //x.foo!B((a){}); // UFCS version shows same errors
    foo!B(x, (a){});
    // Error: template test.foo does not match any function template
declaration
    // Error: template test.foo cannot deduce template function from argument
types !(B)(X,void)
    // Error: template instance foo!(B) errors instantiating template

    // Call explicitly aliased symbol still not good.
    alias foo!B Lol;
    Lol(x, (a){});
    // Error: template test.foo matches more than one template declaration,
test.d(5):foo(T : A) and test.d(6):foo(T : A)
    // Error: function expected before (), not foo!(B) of type void

    // But, avoiding lambda parameter inference stops errors.
    foo!B(x);
    foo!B(x, (B b){});
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list