Из документов :
std::make_shared
...
Может выдать std :: bad_allo c или любое исключение, выданное конструктором из T.
Итак, если вы выбросите исключение из конструктора вашего класса, то std::make_shared
также выбросит его. Помимо исключений, генерируемых конструктором, std::make_shared
может выдавать std::bad_alloc
исключение самостоятельно.
Следовательно, вам не нужно проверять, равен ли результат std::make_shared
nullptr
. Просто обязательно поймайте исключение и правильно обработайте его.