Aplicar "noexcept" na função std ::?

Esse código compila e executa, lançando oint:

#include <functional>

void r( std::function<void() noexcept> f ) { f(); }

void foo() { throw 1; }

int main()
{
    r(foo);
}

No entanto, eu gostaria que o compilador rejeitasse a linhar(foo); Porquer só deve ser passado umnoexcept função. onoexcept O especificador parece ser ignorado. Existe alguma maneira de conseguir isso?

Edit: Esta pergunta é diferente deO conhecimento sobre noexcept-ness deve ser encaminhado ao passar por um ponteiro de função? porque estou pedindo um remédio, especificamente no caso destd::function.

questionAnswers(1)

yourAnswerToTheQuestion