Почему в C++ нет концепции std::invocable_r? ⇐ C++
-
Гость
Почему в C++ нет концепции std::invocable_r?
В C++20 добавлены новые концепции, и стандартная библиотека включает немало из них. Мое внимание особенно привлекла одна концепция: std::invocable, которая проверяет, что функтор может быть вызван с набором аргументов.
std::invocable — это просто синтаксический сахар для std::is_invocable. Однако стандартная библиотека дополнительно определяет std::is_invocable_r, который проверяет, можно ли вызвать функтор с набором аргументов, а также возвращает определенный тип после вызова. Существуют также версии обеих этих утилит nothrow. Однако в стандарте не определены эквивалентные понятия.
Есть ли причина, по которой стандарт не определяет эти понятия, или это просто недосмотр? Возможно, есть какие-то мелочи, которые не уловил случайный читатель, и которые заставили комитет принять решение не включать их?
В C++20 добавлены новые концепции, и стандартная библиотека включает немало из них. Мое внимание особенно привлекла одна концепция: std::invocable, которая проверяет, что функтор может быть вызван с набором аргументов.
std::invocable — это просто синтаксический сахар для std::is_invocable. Однако стандартная библиотека дополнительно определяет std::is_invocable_r, который проверяет, можно ли вызвать функтор с набором аргументов, а также возвращает определенный тип после вызова. Существуют также версии обеих этих утилит nothrow. Однако в стандарте не определены эквивалентные понятия.
Есть ли причина, по которой стандарт не определяет эти понятия, или это просто недосмотр? Возможно, есть какие-то мелочи, которые не уловил случайный читатель, и которые заставили комитет принять решение не включать их?
Мобильная версия