本文介绍了C ++,三元运算符操作数评估规则的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有以下代码:

std::vector<T> R;
if (condition) R = generate();
...
for (int i = 0; i < N; ++i) {
    const auto &r = (R.empty() ? generate() : R);
}

看起来无论 R,generate都被调用。 empty()。是标准行为吗?

It appears that generate is called regardless of R.empty(). Is that standard behavior?

推荐答案

从C ++ 11标准的第5.16 / 1节:

From Paragraph 5.16/1 of the C++ 11 Standard:

这篇关于C ++,三元运算符操作数评估规则的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-14 08:44