2014-12-15 11 views
9

Ich möchte einen Funktionszeiger wie diese erstellen:Wie erstelle ich einen noexcept Funktionszeiger?

void(*function_pointer)()noexcept; 

Aber das funktioniert nicht. Es scheint, dass ein Ausnahmespezifizierer in einer Funktionsdeklaration ungültig ist. Es muss jedoch einen Weg geben, dies zu tun. richtig?

Dies wurde mit einer Frage verknüpft, die nicht das gleiche ist. Hier frage ich, wie man einen Funktionszeiger mit einem noexcept Spezifizierer erzeugt. Das wurde in der Frage "noexcept specifiers in function typedefs" nicht gestellt oder beantwortet.

+3

Inwiefern funktioniert es nicht? Kompilierfehler? Welcher Compiler? Welcher Fehler? –

+2

http://goo.gl/N9wyLv - scheint zu funktionieren wie erwartet. – Mat

Antwort

7

[except.spec]/2:

Eine exception-Spezifikation nur auf einer Funktion declarator für einen Funktionstyp erscheinen soll, zu Zeigertyp Funktion, wobei Bezug auf Funktion Typ oder Zeiger auf Member-Funktionstyp, der der oberste Typ von einer Deklaration oder Definition ist, oder auf einen solchen Typ, der als Parameter oder Rückgabetyp in einem Funktionsdeklarator angezeigt wird.

So ist Ihre Erklärung in der Tat gut gebildet, und Clang compiles it.

Vermutlich ist Ihr Compiler nicht auf dem neuesten Stand.