のexternテンプレート '矛盾した明示的なインスタンス化'
#include <vector>
// Case I: error
エラーC2961を考えると矛盾 明示的なインスタンス、前の明示的なインスタンスは は
'にはextern template' を指定していませんでした
template class std::vector<int>;
extern template class std::vector<int>;
// Case II: fine
//extern template class std::vector<int>;
//template class std::vector<int>;
// Case III: fine
//extern template class std::vector<int>;
//template class std::vector<int>;
//template class std::vector<int>;
// Case IV: fine
//extern template class std::vector<int>;
//extern template class std::vector<int>;
//template class std::vector<int>;
//template class std::vector<int>;
int main()
{
}
VS2015バージョン4.6でコードをビルドし、C2961エラーを参照してください。しかし、コンパイラhttp://gcc.godbolt.org/のエラーは表示されません。
これはVS2015のバグですか?
'std :: vector'は少なくとも2つのテンプレート引数をとりますが、1つではありません。 (実際の数は実装定義です。) – ildjarn
@ildjarnなぜデフォルトは失敗しますか? –
@ildjarn 'Vector'の第2引数は完全にオプションです。 http://www.cplusplus.com/reference/vector/vector/ –