У меня проблема с шаблоном класса. Я хочу, чтобы частные данные в классе были вектором векторов какого-то числового типа, i.e:
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;
}
Как показано, он компилируется отлично, но если я раскомментирую вторую строку в основном, я получаю ошибку (g++ 4.6):
error: template argument 1 is invalid
Почему я получаю эту ошибку? И есть ли у кого-нибудь предлагаемое решение? Спасибо!