Скобки в С++ используются во многих местах: например, в вызовах функций и группировании выражений для переопределения приоритета оператора. Помимо нелегальных дополнительных круглых скобок (например, вокруг списков аргументов вызова функций), общее, но не абсолютное правило С++ состоит в том, что дополнительные круглые скобки никогда не повреждаются:
5.1 Первичные выражения [expr.prim]
5.1.1 Общие сведения [expr.prim.general]
6 Обозначенное в скобках выражение является первичным выражением, тип и значение идентичны значениям прилагаемого выражения. Присутствие круглых скобок не влияет на то, является ли выражение значением l. Выражение в скобках может использоваться в точно таких же контекстах как те, в которых может использоваться замкнутое выражение, и с тем же значение , если не указано иное.
Вопрос: в каких контекстах дополнительные круглые скобки меняют смысл программы на С++, кроме переопределения основного приоритета оператора?
ПРИМЕЧАНИЕ. Я рассматриваю ограничение синтаксиса указателя на член на &qualified-id
без круглых скобок, чтобы быть вне области видимости, потому что он ограничивает синтаксис, а не позволяет использовать два синтаксиса с разными значениями. Точно так же использование круглых скобок внутри макроопределений препроцессора также защищает от нежелательного приоритета оператора.