https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65396
Arthur O'Dwyer <arthur.j.odwyer at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |arthur.j.odwyer at gmail dot com --- Comment #2 from Arthur O'Dwyer <arthur.j.odwyer at gmail dot com> --- FWIW, I just ran into the same thing and confirmed (via Wandbox) that the bug is there in every GCC up to 7.0.0 (and no Clang, back as far as Clang 3.0). This is the test case I was using. There is only one function template "f", and both of its template parameters have defaults by the time it's called: ------------------- #include <stdio.h> template<class T1, class T2 = int> void f(); template<class T1 = int, class T2> void f(); template<class T1, class T2> void f() { puts(__PRETTY_FUNCTION__); } int main() { f(); }