我在模板化类中弄脏了脚,并且无法编译以下代码:
template <class T> using item_ptr = std::shared_ptr<T>;
class Container
{
std::vector<item_ptr> list;
};
我得到两个编译错误,a type-value mismatch at argument 1 in template parameter list
,和一个template argument 2 is invalid.
但是,如果我编写以下代码:
template <class T> //using item_ptr = std::shared_ptr<T>;
class Container
{
std::vector<std::shared_ptr<T>> list;
};
然后它编译没有错误。根据我的理解,这两种说法应该做同样的事情。我理解不对什么?
template <class T> using item_ptr = std::shared_ptr<T>;
template <class T> class Container
{
std::vector<item_ptr<T>> list;
};
如果要在类中使用别名,请在类中定义:
template<class T>
class Container
{
using item_ptr = std::shared_ptr<T>;
std::vector<item_ptr> list;
};