相关疑难解决方法(0)

导致时间旅行的未定义行为

来自msdn博客的这篇文章的一个例子让我做了自动收报机:

它说这个功能:

void unwitting(bool door_is_open)
{
    if (door_is_open) {
        walk_on_in();
    } else {
        ring_bell();

        // wait for the door to open using the fallback value
        fallback = value_or_fallback(nullptr);
        wait_for_door_to_open(fallback);
    }
}
Run Code Online (Sandbox Code Playgroud)

可以优化到这一个:

void unwitting(bool door_is_open)
{
    walk_on_in();
}
Run Code Online (Sandbox Code Playgroud)

因为调用value_or_fallback(nullptr)是未定义的行为(这在本文前面已经证明).

现在我不明白的是:运行时只有在到达该行时才进入未定义的行为.在运行时进入UB之前,第一段的所有可观察效果是否都应该被解决,这不应该发生在之前/之后发生的概念吗?

c++ undefined-behavior

6
推荐指数
1
解决办法
711
查看次数

标签 统计

c++ ×1

undefined-behavior ×1