Почему оператор-> может быть перегружен вручную?
Разве это не имеет смысла, еслиp->m
был просто синтаксический сахар для(*p).m
? По сути, каждыйoperator->
то, что я когда-либо писал, могло быть реализовано следующим образом:
Foo::Foo* operator->()
{
return &**this;
}
Есть ли такой случай, когда я бы хотелp->m
иметь в виду что-то еще, чем(*p).m
?