Чем обусловлена невозможность писать указатель на метод в скобках? Почему запись указателя на метод должна быть именно
ClassName::*MethodName
Почему нельзя так?
ClassName::(*MethodName)
Если это какая-то особенность синтаксиса, прошу дать развёрнутый ответ, т.к. тема очень уж интересная
Не очень понимаю, на какой ответ вы расчитываете. Почему? Потому что в стандарте так написано. Должно быть, это сделано, чтобы не усложнять грамматику понапрасну.
Открываем грамматику для member pointers:
...
nested-name-specifier *
attribute-specifier-seqopt cv-qualifier-seqopt D1
and the nested-name-specifier denotes a class ...
Выражаясь простым языком,
nested-name-specifier - это класс::
(именно в этом случае; в общем случае у него более широкое значение),
*
- это *
.
attribute-specifier-seqopt - это опциональный набор атрибутов вида [[...]]
,
cv-qualifier-seqopt - это опциональные const
и/или volatile
.
D1
- оставшаяся часть объявления, в вашем случае просто имя переменной.
Тут нигде не написано, что после nested-name-specifier может быть (
.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Решаю задачку, не понимаю как сделать замену только в первой половине строки