クラス テンプレートに問題があります。クラスのプライベートデータを、ある種の数値型のベクトルのベクトルにしたい、つまり:
std::vector<std::vector<double> >
std::vector<std::vector<std::complex<double> > >
しかし、私はベクトルのタイプ (stl ベクトルと一緒にサードパーティのベクトルのライブラリを使用しています) と、要素のタイプをテンプレート化する必要があります。テンプレート テンプレートを試してみましたが、それが問題の解決策であるとは思いません。非常に単純化された例は次のとおりです。
#include <complex>
#include <vector>
template<typename T>
class Fred {
std::vector<T> data_;
};
int main(){
Fred<std::vector<double> > works;
//Fred<std::vector<std::complex<double> > doesnt_work;
return 0;
}
示されているように、正常にコンパイルされますが、メインの 2 行目のコメントを外すと、エラーが発生します (g++ 4.6):
error: template argument 1 is invalid
なぜこのエラーが発生するのですか? そして、誰かが提案された修正を持っていますか? ありがとう!