【发布时间】:2021-02-14 19:13:26
【问题描述】:
正如标题所说:C++ 标准是否有任何保证可以确保&&(或and)运算符的左侧总是首先被评估?老实说,我在C++17 Standard搜索不到,我不知道我最想找哪个板块。
问题示例:
我想做这样的事情:
std::unordered_map<std::size_t, std::weak_ptr<T>> objects;
bool f (std::size_t const id) {
bool result = false;
if (not objects.at(id).expired()) {
auto const& object = objects.at(id).lock();
/* Here left side of `and` most be evaluated first */
result = object->parent->remove(id) and
objects.erase(id) == 1;
}
return result;
}
并且想确保代码没有问题。
【问题讨论】:
标签: c++ language-lawyer