如果我没有实例化类,是否应该触发模板化类构造函数中的static_assert?

时间:2013-01-10 07:33:01

标签: c++ c++11 static-assert

  

可能重复:
  C++0x static_assert and template instantiation

由于static_assert

,以下代码无法在GCC中编译
#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;
}

http://ideone.com/3opRfQ

但是,相同的代码在Visual Studio 2012中编译。如果我实际实例化该类,我只会遇到编译错误(同样,如果我将类设置为非模板化的话,则在不实例化类的情况下触发static_assert)。

哪个编译器符合标准?我认为这是海湾合作委员会,但我无法在标准中看到明确的确认。

0 个答案:

没有答案