Приводит ли std::is_invocable_r с void в качестве возвращаемого типа к UB? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Приводит ли std::is_invocable_r с void в качестве возвращаемого типа к UB? [закрыто]

Сообщение Anonymous »

Сегодня я наткнулся на странное поведение std::is_invocable_r.
Исследуя, почему это происходит, я наткнулся на этот вопрос о переполнении стека:
is_invocable_r игнорирует возвращаемый параметр
Ответ в основном решил мою непосредственную проблему.
Однако, когда я снова читал о std::is_invocable_r в cppreference, я наткнулся на эту тревожную строку (выделено мной):

If Fn, R или любой тип в пакете параметров ArgTypes не является полным типом, (возможно, с указанием cv) void или массивом с неизвестной границей, поведение неопределенно.

Таким образом, наличие R как void не вызывает особого поведения, как предложено в вышеупомянутом ответе SO, оно вызывает неопределенное поведение вместо этого!?
Несколькими строками позже cppreference приводит пример кода с утверждением:

Код: Выделить всё

static_assert(not std::is_invocable_r_v);
является void, ArgType[0] тоже является void, так это неопределенное поведение в примере? Дефект, который остался незамеченным?
Или, что более вероятно, я совершенно неправильно понимаю смысл процитированной строки?

Подробнее здесь: https://stackoverflow.com/questions/797 ... lead-to-ub
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»