由于以下原因,以下代码无法在 GCC 中编译static_assert
:
#include <ratio>
#include <iostream>
template<typename T>
class A
{
public:
const static T a = 10;
A()
{
static_assert(false, "Can't instantiate this");
}
};
int main()
{
A<int>::a;
return 0;
}
但是,相同的代码在 Visual Studio 2012 中编译。如果我实际实例化该类,我只会收到编译错误(此外,如果我将类设为非模板化,则会触发 static_assert 而不实例化该类)。
哪个编译器的行为符合标准?我认为是 GCC,但我在标准中看不到明确的确认。