shared_ptr шаблонного типа, включающего его - PullRequest
0 голосов
/ 26 сентября 2018

Возможно ли иметь shared_ptr, указывающий на шаблонный тип, содержащий его?Например,

pair<shared_ptr<ThisPairType>, int>

Как это должно быть определено?

1 Ответ

0 голосов
/ 26 сентября 2018

Невозможно написать то, что вы хотите напрямую, потому что имя типа еще не завершено в тот момент, когда вы хотите его использовать.Вы даже не можете обойти это с помощью typedef, потому что невозможно перенаправить объявление typedefs.

Я рекомендую просто написать структуру:

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

Или унаследовать от pair как рекомендует комментарий Игоря :

Лучшее, что я могу придумать, это struct ThisPairType : std::pair<std::shared_ptr<ThisPairType>, int> {}; Что не совсем то, что вы хотите, но близко.

...