непосредственно инициализировать shared_ptr при построении класса - PullRequest
0 голосов
/ 01 мая 2020

Я играю с указателями c ++ 11, и я не понимаю, почему такое использование shared_ptr недопустимо.

std::shared_ptr<int> i{ std::make_shared<int>(1) };

Я получаю The function is declared 'noexcept' but calls function 'make_shared<int,int>' which may throw exceptions(f.6)

Если я добавлю его в свой конструктор, который также не является исключением, он также явно не принимается.

JobLogger() noexcept { 
    this->i = std::make_shared<int>();
}

В исходном коде shared_ptr я вижу, что пустой конструктор - noexcept constexpr shared_ptr() noexcept {}, так как Я инициализирую i при построении JobLogger?

...