Руководства по выводу типов для std::shared_ptr
Определено в заголовке <memory> | ||
|---|---|---|
template< class T > shared_ptr( std::weak_ptr<T> ) -> shared_ptr<T>; | (1) | (с C++17) |
template< class T, class D > shared_ptr( std::unique_ptr<T, D> ) -> shared_ptr<T>; | (2) | (с C++17) |
Эти руководства по выводу типов предоставляются для std::shared_ptr для учёта граничных случаев, которые пропущены неявными руководствами по выводу типов.
Обратите внимание, что вывод типов шаблонов классов из типов указателей отсутствует, так как невозможно отличить указатели, полученные из массивов и не-массивов new.
Пример
#include <memory>
int main()
{
auto p = std::make_shared<int>(42);
std::weak_ptr w{p}; // explicit deduction guide is used in this case
std::shared_ptr p2{w}; // explicit deduction guide is used in this case
}
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/shared_ptr/deduction_guides