3

MSVC 10 で次のコード スニペットを試してみましたが、問題なく動作します。

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

int main()
{
  return FOO;
}

私が知りたいのは、C++ 標準 (できれば C++98) では、すべてのオペランドが定数式である場合、定数式で条件演算子を使用できるか、またはこれは Microsoft の癖/拡張機能ですか?

4

1 に答える 1

6

これは完全に有効で実用的な標準 C++ です。

三項条件演算子は式を形成し、そのオペランドが定数式である場合、式は定数式です。

標準リファレンスは C++11 5.19/2 です。

条件式コア定数式です[...]

5.16 までに、三項条件式はconditional-expressionsの 1 つのタイプであることに注意してください。他のタイプは のようなものです2 == 3

于 2013-05-14T17:51:12.703 に答える