https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87234
Bug ID: 87234 Summary: GCC should warn if template parameter redefines default argument Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: david.bolvansky at gmail dot com Target Milestone: --- -O3 -Wall -Werror -std=c++17 template< typename T = int > T func( ); template< typename T = int > T func( ) { } No warning. Clang: <source>:5:24: error: template parameter redefines default argument template< typename T = int > T func( ) { ^ <source>:4:24: note: previous default template argument defined here template< typename T = int > T func( ); ^ 1 error generated. See: https://stackoverflow.com/questions/14197436/c11-template-parameter-redefines-default-argument