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>,

Другие вопросы по тегам