Как определить шаблон внутри класса шаблонов?

#c #c 11 #templates #eigen

#c #c 11 #шаблоны #eigen

Вопрос:

Я могу найти определение шаблона для матриц: Eigen::Matrix<T,4,5> v; https://eigen.tuxfamily.org/dox/group__TutorialMatrixClass.html . Однако я не смог найти для векторов. Следовательно, я хочу определить аналогичный способ для векторов, но внутри класса шаблонов, т. Е. EigenVector Как Тот же тип T его класса следующим образом:

 template <typename T>
class HagenDWT
{
 public:
   template <typename T, int Size> using EigenVector = Eigen::Matrix<T, Size, 1>;
   //rest of the code
 private:

 };
 

Однако, если я определяю EigenVector как:

 template <typename M, int Size> using EigenVector = Eigen::Matrix<T, Size, 1>;
 

Все работает нормально. Я хочу определить EigenVector то же, что и его тип класса T. Если это возможно, не могли бы вы предложить, что изменить?

Комментарии:

1. Если вы не хотите параметризовать псевдоним заново typename M , зачем добавлять его в качестве параметра шаблона? Просто используй template <int Size> .

2. Поскольку у внешнего класса есть T параметр шаблона, если вы хотите, чтобы внутренний шаблон использовал тот же тип, вам не нужно включать другой T параметр во внутренний шаблон: template <int Size> using EigenVector = Eigen::Matrix<T, Size, 1>; в противном случае, если вы хотите, чтобы внутренний шаблон использовал другой тип, игнорируйте T и используйте M вместо этого: template <typename M, int Size> using EigenVector = Eigen::Matrix<M, Size, 1>;

3. … и если вы хотите, чтобы он использовался T по умолчанию, но с возможностью указать другой тип: template <int Size, typename M = T> using EigenVector = Eigen::Matrix<M, Size, 1>;

4. Спасибо всем, эти комментарии были действительно полезны, да, сейчас это работает

5. Это должно быть закрыто? Это странно, потому что вопрос отвечает сам на себя: » Все работает нормально». Была просто нереализация, которая EigenVector уже была определена как совпадающая T с ее классом, по желанию, плюс неиспользуемый M параметр.