Возможно, это означает, что грамматика C ++ синтаксически неоднозначна, что вы можете записать некоторый код, который может означать разные вещи, в зависимости от контекста. (Грамматика - это описание синтаксиса языка. Это то, что определяет, что a + b
является операцией сложения, включающей переменные a и b.)
Например, foo bar(int(x));
, как написано, может быть объявлением переменной с именем bar типа foo, где int (x) является инициализатором. Это также может быть объявление функции с именем bar, принимающей int и возвращающей foo. Это определяется внутри языка, но не как часть грамматики.
Грамматика языка программирования важна. Во-первых, это способ понять язык, а во-вторых, это часть компиляции, которая может быть выполнена быстро. Поэтому компиляторы C ++ сложнее написать и использовать медленнее, чем если бы C ++ имел однозначную грамматику. Кроме того, легче создавать определенные классы ошибок, хотя хороший компилятор предоставит достаточно подсказок.