commutativity fail.

After review of #68.
Didn't touch the `T (*foo)(U)`, I'm not sure what convention we want. If we go with `T(*)(U)` we should also say `typedef T(*foo)(U)`, rather than `typedef T (*foo)(U)`. FWIW looking at the C grammar  (and probably the C++ one) would lead us to putting a space here, but then I think it would lead us to `T *foo` and `typedef T *foo` too. Note that regarding pointers, both `T *foo` and `T* foo` are accepted by the styleguide (the examples seem to be evenly mixed).

Since you can also use these function pointers by explicitly dereferencing them (`(*foo)(bar)`), `T (*foo)(U)` looks like the corresponding function declaration.