When compiling the following source code with gcc there are no errors / warnings:
template< typename T = int > T func( );
template< typename T = int > T func( );
When I compile the same source code with clang++, I got the following error:
redeftempparam.cc:2:24: error: template parameter redefines default argument
template< typename T = int > T func( );
^
redeftempparam.cc:1:24: note: previous default template argument defined here
template< typename T = int > T func( );
^
1 error generated.
Command to compile
[clang++|g++] -Wall -Werror -std=c++11 redeftempparam.cc
(Version information: gcc 4.7.2, clang version 3.3 (trunk 171722))
My question:
Is this type of redefinition allowed? If not: can you please point me to the appropriate point in the C++ standard?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…