Использовать «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.

Ответы на вопрос(1)

Ваш ответ на вопрос