使用 gcc 编译以下源代码时,没有错误/警告:
template< typename T = int > T func( );
template< typename T = int > T func( );
当我使用 clang++ 编译相同的源代码时,出现以下错误:
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.
编译命令
[clang++|g++] -Wall -Werror -std=c++11 redeftempparam.cc
(版本信息:gcc 4.7.2,clang 3.3版(主干171722))
我的问题:
允许这种类型的重新定义吗?如果不是:您能否指出 C++ 标准中的适当点?