Parametr C ++ 11: template na nowo definiuje domyślny argument

Podczas kompilowania następującego kodu źródłowego za pomocą gcc nie ma błędów / ostrzeżeń:

template< typename T = int > T func( );
template< typename T = int > T func( );

Kiedy kompiluję ten sam kod źródłowy z clang ++, otrzymałem następujący błąd:

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.

Polecenie do kompilacji

[clang++|g++] -Wall -Werror -std=c++11 redeftempparam.cc

(Informacje o wersji: gcc 4.7.2, wersja clang 3.3 (trunk 171722))

Moje pytanie:

Czy ten typ redefinicji jest dozwolony? Jeśli nie: czy możesz wskazać mi odpowiedni punkt w standardzie C ++?

questionAnswers(1)

yourAnswerToTheQuestion