私が追跡したドラフトC標準(N1124)を使用すると、同様のルールがあります。加算式に関するセクション(§6.5.6/ 2)は次のように述べています
さらに、両方のオペランドが算術型であるか、一方のオペランドがオブジェクト型へのポインタである必要があります。
そして、オブジェクトタイプは§6.2.5/1で次のように定義されています。
オブジェクトに格納されている値または関数によって返される値の意味は、オブジェクトへのアクセスに使用される式のタイプによって決まります。(オブジェクトとして宣言された識別子は、そのような式の中で最も単純です。型は識別子の宣言で指定されます。)型は、オブジェクト型(オブジェクトを完全に記述する型)、関数型(関数を記述する型)、およびに分割されます。不完全な型(オブジェクトを説明するが、そのサイズを決定するために必要な情報が不足している型)。
関数型はオブジェクト型とは異なるため、これは関数ポインタでのポインタ演算が禁止されていることを示しています。
C ++では、この操作は不正です。§5.7/1で与えられているポインタ加算の定義は次のように述べています。
さらに、両方のオペランドが算術型または列挙型であるか、一方のオペランドが完全に定義されたオブジェクト型へのポインタであり、もう一方が整数型または列挙型である必要があります。
ただし、§3.9/9は次のように述べています
オブジェクト型は、関数型でも、参照型でも、void型でもない(おそらくcv修飾された)型です。
まとめると、これは、C++では関数ポインターをインクリメントできないことを意味します。
お役に立てれば!