C++ - 模板 + 'using' 子句 - 参数不匹配错误

C++ - Template + 'using' clause - mismatch argument error

我正在尝试使用一个模板和两个 typedef,但我知道唯一的方法是插入一个像这样的 'using' 子句:

template<typename T>
using Car = std::pair<T, T>;
using SparseMatrix = std::vector< Car >;

问题是 gcc 给我以下错误:

error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::vector’

我认为问题在于 Car 不是类型,因为 'using' 子句。我该如何解决?

Car 是别名模板,因此您需要在 SparseMatrix 中获取模板参数并将其转发到:

template <typename T>
using SparseMatrix = std::vector<Car<T>>;