Почему существует уровень приоритета для таких операторов, как static_cast? - PullRequest
7 голосов
/ 11 января 2012

Согласно cppreference.com, уровень приоритета оператора C ++ static_cast равен 2 .

Почему эти уровни даже определены?Я не могу думать ни о какой причине.Кто-нибудь может привести пример?

Ответы [ 2 ]

4 голосов
/ 11 января 2012

Стандарт не определяет уровни приоритета; они могут быть выведены из грамматики.

Как и любая другая синтаксическая особенность, static_cast имеет место в этой грамматике. Поскольку его использование требует скобок, выражение его операнда никогда не может быть неоднозначным, но это означает лишь то, что не имеет смысла извлекать для него уровень приоритета из грамматики, а не то, что его место в самой грамматике бессмысленно. Таким образом, стандарт здесь не делает ничего сумасшедшего.

Что бессмысленно, так это то, что любой источник, на который вы ссылались, имел приоритет для static_cast. Это не неправильно , это просто бессмысленно.

3 голосов
/ 11 января 2012

Уровень приоритета оператора приведения C ++ равен 2

Кто это сказал?Стандарт не определяет приоритет оператора.Он определяет грамматику в BNF-подобной нотации.

...