ポインター (foo(void *bar)) である関数パラメーターでは、const を使用して、ポインター (パラメーター) 自体が定数 (foo(void * const bar)) であること、および/またはそのデータが定数であることを指定できます。ポインターが指す定数 (foo(void const *bar)) です。
ただし、foo(void const *bar) の場合、これは呼び出し元に対して、foo が bar が指すデータを変更しようとしないことを保証するだけです。bar が指すメモリー位置が常に有効であることを、bar が foo に保証するわけではありません。
実行可能イメージ内の定数データを操作している場合、その保証を foo に提供でき、foo が関数呼び出しの期間よりも長くそのデータへの参照を保持する必要がある場合、foo は単にコピーを保持できます。データのコピーを作成する必要はありません。
この保証を C++ 型システムでエンコードする方法はありますか?
ありがとう。