C++ шаблон typedef
У меня есть класс
template<size_t N, size_t M>
class Matrix {
// ....
};
Я хочу сделать typedef
который создает Vector
(вектор столбца), который эквивалентен Matrix
с размерами N и 1. Примерно так:
typedef Matrix<N,1> Vector<N>;
Что приводит к ошибке компиляции. Следующее создает нечто подобное, но не совсем то, что я хочу:
template <int N>
class Vector: public Matrix<N,1>
{ };
Есть ли решение или не слишком дорогой обходной путь / лучшие практики для него?
1 ответ
Решение
В C++11 добавлены объявления псевдонимов, которые являются обобщением typedef
, разрешающие шаблоны:
template <size_t N>
using Vector = Matrix<N, 1>;
Тип Vector<3>
эквивалентно Matrix<3, 1>
,
В C++03 самым близким приближением было:
template <size_t N>
struct Vector
{
typedef Matrix<N, 1> type;
};
Здесь тип Vector<3>::type
эквивалентно Matrix<3, 1>
,