руководства по выводу типов для 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/cpp/memory/shared_ptr/deduction_guides