Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Conditional-Operator in Constant Expression

I tried the following code snippet with MSVC 10, where it works fine.

enum
{
  FOO = (sizeof(void*) == 8 ? 10 : 20)
};

int main()
{
  return FOO;
}

What I would like to know is: Does the C++ Standard (preferably C++98) allow me to use the conditional-operator in a constant expression when all operands are constant expressions, or is this a Microsoft quirk/extension?

like image 385
mooware Avatar asked Apr 30 '26 17:04

mooware


1 Answers

This is perfectly valid and sensible standard C++.

The ternary conditional operator forms an expression, and the expression is a constant expression if its operands are.

The standard reference is C++11 5.19/2:

A conditional-expression is a core constant expression [...]

Note that by 5.16, ternary conditional expressions are one type of conditional-expressions. Other types are things like 2 == 3.

like image 102
Kerrek SB Avatar answered May 03 '26 07:05

Kerrek SB



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!