MSVCコンパイラを使用するときにテンプレート化されたクラスで初期化された静的const変数の取得に問題があります。私はMSVC2013、MSVC2012およびMSVC2010を試しました。このコードは、MinGW、MinGW-w64、GCC、およびClangでうまく動作します。MSVCで静的constテンプレートメンバの初期化に失敗する
#include <iostream>
#include <string>
using namespace std;
template <typename T>
struct StringHolder
{
static const std::string str;
};
template<> const string StringHolder<int>::str { "integer" };
int main()
{
// prints nothing when compiled with MSVC2013, works with MinGW/GCC/Clang
cout << StringHolder<int>::str << endl;
return 0;
}
しかし、VC++ 2013は、 –