次のコードでコンパイル時に問題が発生しています。
template <typename T,
template <class T, class Allocator = std::allocator<T> > class C>
bool is_in(const C<T>& a, const C<T>& b);
template <typename T, std::vector> // HERE
bool is_in(const std::vector<T>& a, const std::vector<T>& b)
{
return false; // implementation tbd
}
...
vector<int> a, b;
cout << is_in(a,b) << endl;
エラーメッセージは次のとおりです(「ここ」とマークされた行):
error: 'std::vector' is not a type
(もちろん、私はstdからのベクトルを含めました!)。なにか提案を?私はしばらくそれをいじりましたが、私はいくつかの助けを使うことができるようになりました:-)私は最初のテンプレート宣言を部分的に特殊化して、実際のタイプに応じてコンパイラスイッチの実装を持たせる必要がありますコンテナC(セット用にis_in、ベクトル用に1つ、範囲用に1つ、毎回異なるアルゴリズムがあります)。
ありがとう!