#include <iostream>
#include <type_traits>
namespace MyNS {
struct Test1 {};
template <typename > class Test;
template <> class Test<Test1> {
public:
constexpr static char const *description[] = { "X1", "Y1",};
};
constexpr char const *Test<Test1>::description[];
static const char * getDesc(int i) {
return MyNS::Test<MyNS::Test1>::description[i];
}
}
int main()
{
std::cout << MyNS::getDesc(0) << std::endl;
}
これはMSVC(エラーC2373: '説明':再定義;異なるタイプ修飾子)で失敗しますが、GCC 4.8で正常にコンパイルされます。MSVCエラー - エラーC2373: 'description':再定義。異なるタイプ修飾子
MSVCとGCCの両方を使って正常に構築するための回避策はありますか?
Fyi、それはまた、clang 3.8で問題なくコンパイルされます。 – WhozCraig