【发布时间】:2012-12-21 06:28:51
【问题描述】:
使用 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++ 标准中的适当点?
【问题讨论】:
标签: c++ templates c++11 default-value