1

重複の可能性:
C++0x static_assert とテンプレートのインスタンス化

次のコードは、次の理由により 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;
}

( http://ideone.com/3opRfQ )

ただし、同じコードが Visual Studio 2012 でコンパイルされます。クラスを実際にインスタンス化した場合にのみコンパイル エラーが発生します (また、クラスを非テンプレート化すると、クラスをインスタンス化せずに static_assert がトリガーされます)。

標準に従って動作しているコンパイラはどれですか? GCCだと思いますが、標準に明確な確認が見られません。

4

0 に答える 0