shared_ptr 包含它的模板化类型

shared_ptr of a templated type enclosing it

是否可以让 shared_ptr 指向包含它的模板类型?例如,

pair<shared_ptr<ThisPairType>, int>

这个应该怎么定义?

不能直接写你想要的,因为name类型在你要使用的时候还没有完成。您甚至无法使用 typedef 解决此问题,因为无法转发声明 typedef。

我建议简单地写一个结构:

struct Recursive { std::shared_ptr<Recursive> first; int second; };

或根据 igor's 评论推荐的 pair 继承:

The best I could think of is struct ThisPairType : std::pair<std::shared_ptr<ThisPairType>, int> {}; Which is not quite what you want, but close.