I\'d like to declare a function that returns a pointer to a function of the same type.
I would like to use it to implement state machines like the one below:
<It's not possible to do this in C: a function can't return a pointer to itself, since the type declaration expands recursively and never ends. See this page for an explanation: http://www.gotw.ca/gotw/057.htm
The workaround described on the above page means returning void (*) ()
instead of the correctly-typed function pointer; your workaround is arguably a little neater.
This is discussed in Herb Sutter's book More Exceptional C++, Item 32, where the answer seems to be (for C) "not without use of casts". For C++ it is possible with the usual introduction of a class to provide some extra indirection.