Прежде всего, вот мои примеры:
SymmetricMatrix<std::vector<int>, int> a;
SymmetrixMatrix<std::list<int>, int> b;
SymmetricMatrix<std::deque<double>, double> c;
SymmetricMatrix<std::vector<int> > d;
SymmetricMatrix<std::vector<double> > e;
Итак, есть два параметра шаблона. Если я напишу параметр по умолчанию для второго, мне не нужно будет указывать его имя при создании объекта. Но как я могу настроить его на первый параметр? Например, если первый параметр std::vector<int>
второй должен быть int
если первый std::vector<double>
второй должен быть double
,
template<class DS, class T = typename DS::value_type>
class SymmetricMatrix
{
};
SymmetricMatrix<std::deque<double>> c;
Предполагается, что DS (структура данных) содержит typedef value_type, иначе он не будет компилироваться. Вы можете заменить value_type чем угодно, если оно в DS.
Других решений пока нет …