--- the forwarded message follows ---
--- Begin Message ---Code: #include<tuple> #include<iostream> template<class Head, class... Tail> void f(std::tuple<Head, Tail...> ) { std::cout << "std::tuple<Head, Tail...>\n"; } template<class Head> void f(std::tuple<Head> ) { std::cout << "std::tuple<Head>\n"; } int main() { f(std::tuple<int>{}); } GCC accepts this code silently. But Clang generates error: test.cpp:18:5: error: call to 'f' is ambiguous f(std::tuple<int>{}); ^test.cpp:5:6: note: candidate function [with Head = int, Tail = <>]void f(std::tuple<Head, Tail...> ) ^ test.cpp:11:6: note: candidate function [with Head = int] void f(std::tuple<Head> ) ^ Which compiler is right? Isn't it abiguity in fact?
--- End Message ---
