本文介绍了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 ++,三元运算符操作数评估规则的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!