У меня есть гораздо более простое предложение: используйте меньше shared_ptr
. Если вы так часто их используете, похоже, что вы слепо полагаетесь на них, а не на сборщик мусора. C ++ требует, чтобы вы думали о владении объектом, но если вы это сделаете, большинство умных указателей можно заменить простыми ссылками, которые не длинные.
Вы действительно нуждаетесь в долевой собственности? Если вы остановитесь и задумаетесь на несколько минут, я уверен, что вы сможете точно определить одного владельца объекта и несколько его пользователей, которые будут когда-либо использовать его только при жизни владельца. Так что просто сделайте его локальным / членским объектом владельцев и передайте ссылки тем, кто должен его использовать.
По общему признанию, это не решает проблему в общем случае (есть много других длинных имен шаблонов), но в данном конкретном случае я думаю, что это лучшее решение.