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?
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
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.