On Friday, 6 October 2017 at 19:31:11 UTC, Timon Gehr wrote:
The proposal is to make all arguments "single type arguments". The "single type" might be a tuple. A tuple type is just a type, after all. For two current functions where only one matches but after the change both would match, the same one would still be selected, because it is more specialized.

[snip]
Then the call foo(2) will still go to the first overload and the call foo(1,2) will still go to the second overload, while the call foo(1,2,3) will still go to the third overload.


So under your thinking, the original example should have been something like:

---
auto id(T)(T x){ return x; }

void main(){
    auto a = id(2); // ok, a is 2.
    auto b = id(1,2); // error, b is not single type argument
    auto c = id(1,); // ok, c is 1.
    auto d = id((1,2)); // ok, d is (1,2)
    auto e = id((1,)); // ok, e is (1,)
}
---

Reply via email to