g ++ и clang ++ различное поведение с интегральным параметром шаблона
У меня есть следующий код C ++ 11.
#include
using IntType = unsigned long long;
template struct Int {};
template
struct is_int : std::false_type {};
template
struct is_int : std::true_type {};
int main()
{
static_assert (is_int::value, "");
return 0;
}
Clang ++ 3.3 компилирует код, но на g ++ 4.8.2 статическое утверждение терпит неудачу
$ g++ -std=c++11 main.cpp
main.cpp: In function ‘int main()’:
main.cpp:15:5: error: static assertion failed:
static_assert (is_int::value, "");
^
$
Проблема вызвана различными интегральными параметрами шаблона. Какой компилятор прав в этом случае?