包含它的模板类型的shared_ptr

时间:2018-09-26 03:54:14

标签: c++ c++11 shared-ptr std-pair

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

pair<shared_ptr<ThisPairType>, int>

应如何定义?

1 个答案:

答案 0 :(得分:1)

无法直接写下您想要的内容,因为该类型的名称在您要使用该名称时尚未完成。您甚至无法使用typedef解决此问题,因为无法转发声明的typedef。

我建议只编写一个结构:

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

或按照igor's评论的建议从pair继承:

  

我能想到的最好的是struct ThisPairType : std::pair<std::shared_ptr<ThisPairType>, int> {};,它不是您想要的,而是接近的。