>>484
元からイケてない変数宣言の文法を部分的にどうにかすっきり見せる
って程度の話なんで、複雑な事例を更に複雑にするような変なルール
にしたいわけではない。

C++ 的な方向に振るなら int (*f)(); は
std::add_pointer_t<int()> f;

std::decay_t<int()> f;
かなぁ……。

冗長だけど変に入り組んだ感じがなくなるので type_traits はそれなりに取り入れてもいいと思うよ。