2014-12-15 8 views
9

Chciałbym utworzyć wskaźnik funkcji tak:Jak utworzyć wskaźnik funkcji noexcept?

void(*function_pointer)()noexcept; 

Ale to nie działa. Wygląda na to, że specyfikator wyjątku w deklaracji funkcji jest nieprawidłowy. Musi być jednak sposób na zrobienie tego. Dobrze?

Zostało to połączone z pytaniem, które nie jest tym samym. Tutaj pytam, jak utworzyć wskaźnik funkcji ze specyfikatorem noexcept. To pytanie nie zostało zadane w pytaniu "nie tylko specyfikatory w funkcji typedefs".

+3

W jaki sposób to nie działa? Błąd kompilacji? Który kompilator? Jaki błąd? –

+2

http://goo.gl/N9wyLv - wydaje się działać zgodnie z oczekiwaniami. – Mat

Odpowiedz

7

[except.spec]/2:

wyjątku specyfikacji stosuje się tylko w funkcji declarator dla typu funkcyjnego wskaźnik działania typ odniesienie do funkcji typ lub wskaźnik do typu funkcji elementu, który jest typem najwyższego poziomu deklaracją lub definicją, lub takim typem występującym jako parametr lub typ zwracany w deklaratorze funkcji.

Więc twoje oświadczenie jest rzeczywiście dobrze uformowane, a Clang compiles it.

Prawdopodobnie Twój kompilator nie jest aktualny.