Почему мне не выдает ошибок при определении, ведь оператор -> должен возвращать указатель или класс, у которого есть -> ?
struct X {
int operator -> () {
return 42;
}
};
int main() {
X x;
x.operator->();
// x->(); // error
}
Стандарт не устанавливает требований на тип, возвращаемый перегруженным оператором ->. Однако возвращение чего-то, не имеющего ->, делает невозможным вызов этого оператора как оператора (а вызов как функции все равно будет работать)
16.5.6 Class member access [over.ref]
1 operator-> shall be a non-static member function taking no parameters. It implements the class member access syntax that uses ->.
postfix-expression -> template opt id-expression
postfix-expression -> pseudo-destructor-name
An expression x->m is interpreted as (x.operator->())->m for a class object x of type T if T::operator->() exists and if the operator is selected as the best match function by the overload resolution mechanism
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости