https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88864
Bug ID: 88864 Summary: default template arguments not merged across all declarations Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: barry.revzin at gmail dot com Target Milestone: --- Shorter repro from StackOverflow https://stackoverflow.com/q/54202462/2069064: struct B { template<typename T, typename U> B(T t); }; template <typename T, typename U = int> B::B(T t) { } B b(3); This is rejected by all versions of gcc because of an inability to deduce U.