在这个问题中,提问者询问了关于模板typedef的解决方案,但是在C++中并不可行。提问者自己提出了一个解决方案,但并不满意。
我的问题是,相较于 OP 的解决方案(假设这些类永远不会被用作基类指针或使用
template<size_t N, size_t M>
class Matrix {
// ....
};
// Problem - will not compile
typedef Matrix<N,1> Vector<N>;
// Solution
template <int N>
class Vector: public Matrix<N,1>
{ };
我的问题是,相较于 OP 的解决方案(假设这些类永远不会被用作基类指针或使用
new
),Helper::type
solution 给我们带来了什么优势?在发布版本中,空类应该不会带来额外的开销(或者确实会吗?)。我唯一能看到的缺点是,在调试构建时,你需要展开基类以进行调试。
编辑: 除了所选答案之外,还请参阅 @Dani 的答案,他建议继承版本需要定义构造函数,这是一个额外的不便。
Helper::type
实际上就是正确的类型。我已经有一段时间没有认真研究这些东西了,但是如果我没记错的话,类型推导等方面可能存在一些微妙的问题。 - user1084944