struct Foo
{
void f()
{
// (*)
}
};
(*) でマークされた行の「this」のタイプは何ですか?
const Foo*またはFoo*ですか?
n3376 9.3.2/1
非静的 (9.3) メンバー関数の本体では、キーワード this は、関数が呼び出されるオブジェクトのアドレスを値とする prvalue 式です。
クラス X のメンバー関数での this の型は X*です。メンバー関数が const と宣言されている場合、this の型は const X* であり、メンバー関数が volatile と宣言されている場合、this の型は volatile X* であり、メンバー関数が const volatile と宣言されている場合、this の型は const です。揮発性 X*.