次の間に違いはありますか:
void (* const algorithm)();
と
void const (* const algorithm)();
const
静的メソッドへのポインターを扱うときは?
この回答const
に記載されているように、変数へのポインターの場合、ポインターが変更されるべきではないメモリを指している場合に使用するのが理にかなっていることを理解しています。しかし、関数アドレスは実行時に効果的に一定ではないのでしょうか?
私がこれを尋ねている理由は、関数パラメーターとしての2 番目のオプションが機能しないためです。
編集
コンパイルされないコードは次のとおりです。
struct A {
static void a() {}
};
void b(void const (* const callback)()) {}
int main() {
b(&A::a); // No matching function for call to 'b'
}
上記の例は、関数a()
に戻り値の型がある場合に機能しますconst void
。