Вы предполагаете, что единственными типами, которые могут быть переданы в качестве аргументов оператора, являются типы, которые могут быть определены в языке.
Я бы сказал, что любой тип, который может быть распознан компилятором, может быть переданв качестве аргумента, включая внутренние типы, такие как «идентификатор».Оператор будет иметь два аргумента в своем представлении AST, что достаточно, чтобы позволить вам определить семантику.
Еще один аргумент в том, что теория языка может предоставить один набор определений для вашего словаря, но это не единственныйодин.
Например, оператор может быть человеком, который работает на машине.Это определение не имеет отношения к теории программирования, но оно не помешает мне использовать ключевые слова на предметно-ориентированном языке, выражающие что-то связанное с работой на машине.Точно так же термин «оператор» имеет более широкое определение в математике, чем то, которое является специфическим для теории программирования - и это определение не становится недействительным просто при работе с языком программирования.
Другими словами, есливы не называете это оператором, что будет вы бы назвали?
РЕДАКТИРОВАТЬ
Чтобы уточнить, мой первый аргумент относится ксинтаксис для использования оператора (вызов).Эти операторы имеют правильные аргументы, которые являются идентификаторами - именами членов - которые язык C ++ не может выразить с использованием типа данных.Язык C ++ имеет , имеет указатели на члены, но они не то же самое, что и члены - просто переменная не совпадает с указателем на эту переменную.
Полагаю,это то, к чему относится вопрос.Правильный параметр этих операторов имеет тип, который нельзя выразить или манипулировать обычным образом в языке.
То, что происходит, когда этот синтаксис сопоставляется с перегруженной функцией operator->
, - это совсем другое.Эта функция не является оператором, она лишь реализует оператор.