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 ++?

Ответы на вопрос(1)

Ваш ответ на вопрос