некий метод принимающий typename T, typename Args&&..., нужно проверить бросает ли T конструктор исключение в случае вызова конструктора с аргументами
noexcept(noexcept(std::conditional_t<std::is_aggregate_v<T>, T{std::forward<Arg>(args)...}>, ???));
чем std::is_nothrow_constructible не устроил?
Зачем ты тайптрейты в noexcept expression суешь...
это noexcept operator вообще-то
В чем же он прав?
Это не noexcept expression https://en.cppreference.com/w/cpp/language/noexcept
Мне надо убедиться, что конструктор не бросает исключение, тобишь, будет являться noexcept в случае принятия Args...
Судя по всему, он криво пытался изобразить инициализацию
Так это... std::is_nothrow_constructible проверяет и constructible, и noexcept(...)
У тебя там документацию совсем забанили?
Я думал изначально его юзать, но он внутри использует integral_constant
а как же агрегатная инициализация?
И что не так?
is_nothrow_constructible не относится к агрегатной инициализации, разве нет?
Нет, это относится к тайп трейтам :)
Хм, а вопрос интереснее, чем кажется
Обсуждают сегодня