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