C ++ 11: параметр шаблона переопределяет аргумент по умолчанию
При компиляции следующего исходного кода с помощью 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 ++?