Erzwinge "noexcept" auf std :: function?

Dieser Code wird kompiliert und ausgeführt und wirft dasint:

#include <functional>

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

void foo() { throw 1; }

int main()
{
    r(foo);
}

Howeve, r Ich möchte, dass der Compiler die Zeile ablehntr(foo); weilr sollte nur ein @ übergeben werdnoexcept Funktion. Dasnoexcept -Spezifizierer scheint ignoriert zu werden. Gibt es eine Möglichkeit, das zu erreichen?

Bearbeiten: Diese Frage unterscheidet sich vonIst das Wissen über Noexcept-ness weiterzuleiten, wenn ein Funktionszeiger umgangen wird? weil ich um eine Abhilfe bitte, speziell beistd::function.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage