Использовать «noexcept» для std :: function?
Этот код компилируется и запускается, бросаяint
:
#include <functional>
void r( std::function<void() noexcept> f ) { f(); }
void foo() { throw 1; }
int main()
{
r(foo);
}
Однако я хотел бы, чтобы компилятор отклонил строкуr(foo);
так какr
должен быть передан толькоnoexcept
функция.noexcept
Спецификатор, кажется, игнорируется. Есть ли способ добиться этого?
Изменить: этот вопрос отличается отПредполагается ли, что знания о noexcept-ness пересылаются при передаче указателя на функцию? потому что я прошу средства правовой защиты, особенно в случаеstd::function
.