В C ++ есть два оператора, результат которых всегда можно определить во время компиляции, независимо от операнда (ов), и это sizeof
[1] и ::
[2].
Конечно, существует множество конкретных применений других операторов, которые могут быть разрешены во время компиляции, например, перечисленные в стандарте для целочисленных константных выражений .
[1] C99,в отличие от C ++, имеет типы массивов переменной длины.sizeof
, примененный к VLA, не может быть определен во время компиляции.Некоторые компиляторы C ++ предоставляют VLA как расширение.
[2], то есть во время компиляции можно определить, какой объект является результатом выражения.Если сущность является объектом, то значение объекта - это другое дело.