Вопросы к Поиску с Алисой
Определить, что переменная является sharedptr в C++, можно с помощью шаблона isshared_ptr: stackoverflow.com
template<class T> struct is_shared_ptr : std::false_type {}; template<class T> struct is_shared_ptr<std::shared_ptr<T>> : std::true_type {};
Например, для проверки, является ли переменная shared_ptr, можно использовать статическое утверждение: static_assert(is_shared_ptr<std::shared_ptr<int>>::value == true, ””); static_assert(is_shared_ptr<int>::value == false, ””);
. stackoverflow.com
Также определить, что переменная является sharedptr, можно с помощью метода usecount(), который возвращает количество объектов shared_ptr, ссылающихся на один и тот же управляемый объект. en.cppreference.com habr.com