Strange `tuple used as a type` error if using: template tuple parameter + named argument of its type + an constraint. --- void f(int n)(int) { } void f(U...)(U) { } // ok void f(U...)(U a) { } // ok void f(U...)(U) if(true) { } // ok void f(U...)(U a) if(true) { } // Error: tuple U is used as a type void main() { f!0(0); } ---
Isn't this the correct behavior? -- U = 0 is not an type. By the precedence of overload resolution, DMD does not instantiate some of the template function overloads and semantic errors are not reported for them. If you define each template function alone, DMD(v2.056head) reports a "used as a type" error for it.
dmd 2.056 now prints same error for both tuple templates with an constraint (so this bug is at least more consistent now). P.S. This is the full test code, I don't propose to define any function alone.
https://github.com/D-Programming-Language/dmd/pull/4439
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/5e897777c763b5f7e854f1a06c50aaa43340b1cb fix Issue 6810 - Strange `tuple used as a type` error https://github.com/D-Programming-Language/dmd/commit/6c5e3c378e5c8c23bf51ca94b967ff3e029f2f4f Merge pull request #4439 from 9rnsr/fix6810 Issue 6810 - Strange `tuple used as a type` error
Commits pushed to stable at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/5e897777c763b5f7e854f1a06c50aaa43340b1cb fix Issue 6810 - Strange `tuple used as a type` error https://github.com/D-Programming-Language/dmd/commit/6c5e3c378e5c8c23bf51ca94b967ff3e029f2f4f Merge pull request #4439 from 9rnsr/fix6810
Commits pushed to dmd-cxx at https://github.com/dlang/dmd https://github.com/dlang/dmd/commit/5e897777c763b5f7e854f1a06c50aaa43340b1cb fix Issue 6810 - Strange `tuple used as a type` error https://github.com/dlang/dmd/commit/6c5e3c378e5c8c23bf51ca94b967ff3e029f2f4f Merge pull request #4439 from 9rnsr/fix6810