gpt4 book ai didi

c++ - 如果 control-reaches-end-of-body 返回 nullopt,什么会中断?

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:31 24 4
gpt4 key购买 nike

C++14 为我们提供了自动返回类型推导,而 C++17 有一个 optional<T>。类型模板(或类型构造函数,如果你愿意的话)。现在,真的,optional存在于标准库中,而不是语言本身,但是-当控制到达主体末尾时,为什么不将它用作非空函数的返回值呢?我会认为:

optional<int> foo(int x)
{
if (x > 0) return 2 * x;
}

应该是部分函数的完全有效且可编译的语法,返回 optional<int> .

现在,我知道这是一个有点疯狂的想法。我的问题不是你喜不喜欢,而是——假设委员会中的每个人都出于某种奇怪的原因真的喜欢它。它会破坏/冲突什么?

注意:当然,如果您指定一个非可选的返回值,这是行不通的,但这不算破坏。

最佳答案

想想以 abort(); 结尾的函数或具有相同效果的自定义函数。如果编译器无法静态证明函数永远不会到达结束 },这将迫使编译器生成无用代码,因此与 C++ 的原则之一冲突,即 零开销原则:不用即不付费。

关于c++ - 如果 control-reaches-end-of-body 返回 nullopt,什么会中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41945469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com