Можно ли применить модификатор noexcept
к выражению лямбда? Если да, то как?
Может ли noexcept
сделать ограничение на аргумент функции? Например, что-то вроде следующего кода, где смысл заключается в том, что функция обратного вызова должна быть noexcept
?
//probably not valid code - I'm just trying to express the idea
void f_async(std::function<void (int) noexcept> callback) noexcept
{
...
}
Это может быть почти выполнено с помощью следующего кода, но мне интересно, есть ли способ использовать что-то вроде вышеупомянутой альтернативы.
void f_async(std::function<void (int)> callback)
noexcept(callback(std::declval<int>()))
{
...
}
Проблема здесь состоит в том, что f_async
может быть noexcept(false)
, если обратный вызов noexcept(false)
- я хочу сделать более сильное утверждение о том, что f_async
всегда noexcept
, что означает, что он доступен только при использовании a noexcept
.