g ++ i clang ++ różne zachowanie ze zintegrowanym parametrem szablonu

Mam następujący kod C ++ 11.

#include <type_traits>

using IntType = unsigned long long;

template <IntType N> struct Int {};

template <class T>
struct is_int : std::false_type {};

template <long long N>
struct is_int<Int<N>> : std::true_type {};

int main()
{
    static_assert (is_int<Int<0>>::value, "");
    return 0;
}

Clang ++ 3.3 kompiluje kod, ale na g ++ 4.8.2 statyczna asercja kończy się niepowodzeniem

$ g++ -std=c++11 main.cpp 
main.cpp: In function ‘int main()’:
main.cpp:15:5: error: static assertion failed: 
     static_assert (is_int<Int<0>>::value, "");
     ^
$ 

Problem jest spowodowany przez różne integralne parametry szablonu. Który kompilator ma rację w tym przypadku?

questionAnswers(2)

yourAnswerToTheQuestion