Мне нужен указатель, где я могу сказать, когда счетчик ссылок равен единице. По сути, указатель работает как слабый_птр, но очистка должна выполняться вручную. То есть программа очень часто проходит цикл своих указателей и проверяет, у каких из них осталась только одна ссылка. Некоторых он будет чистить, других он будет сохранять еще дольше (на случай, если кому-то это понадобится снова).
Теперь я знаю, как это сделать, используя комбинацию пользовательской функции очистки и weak_ptr. Я просто думаю, что то же самое можно сделать с помощью более простого кода, если бы я мог просто выяснить, когда остается только один пользователь shared_ptr.
Я знаю, что shared_ptr имеет функцию use_count
, но в документации есть зловещее примечание: "... не обязательно эффективно. Используйте только для целей отладки и тестирования ..." Естественно Я не очень хочу использовать что-то с таким предупреждением. В любом случае мне не нужен счетчик, просто способ определить, когда остался только один.
Есть ли какая-нибудь бустер-оболочка, которая достигает того, что я хочу (может быть в любой библиотеке)? Или я должен использовать технику, которую я уже знаю, о пользовательской функции очистки в сочетании со слабым_птром?