template<bool b = 2> void foo(void) {}
template void foo();
template<unsigned char n = 258> void bar(void) {}
template void bar();
GCC instanziiert foo < true> und bar < 2>; Clang lehnt beides ab mit "error: non-type template argument ergibt 2, das nicht eingeschränkt werden kann, um 'bool' [-WC++ 11-enning]" einzugeben.Erwartetes Verhalten bei Vorlagenparametern außerhalb des Bereichs?
Ist der obige Code gültig? Ist das ein Fehler in einem von ihnen?
verwendet Versionen: Clang 3.8.0-2ubuntu4, 5.4.0 GCC 20.160.609 (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.2)