Определить, что переменная является sharedptr в C++, можно с помощью шаблона isshared_ptr: 2
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, '');
. 2
Также определить, что переменная является sharedptr, можно с помощью метода usecount(), который возвращает количество объектов shared_ptr, ссылающихся на один и тот же управляемый объект. 13