gpt4 book ai didi

c++ - noexcept 成为类型系统的一部分

转载 作者:太空狗 更新时间:2023-10-29 21:15:12 24 4
gpt4 key购买 nike

我听说 noexcept 将成为 C++17 中函数类型的一部分。这会有什么不同?这是否意味着我们必须在我们的模板中区分 noexcept 和非 noexcept 函数和成员函数(这将使我们必须编写的样板代码量加倍) ?

例如,对于匹配函数指针的当前模板:

template<typename R, typename... Args>
struct Foo<R (*)(Args...)> {};

我们还需要:

template<typename R, typename... Args>
struct Foo<R (*)(Args...) noexcept> {};

这仅适用于良好的旧功能。对于成员函数,我们已经有了 constvolatile 和 ref-qualifiers,产生了大量的组合。随着 noexcept 的加入,它会变得两倍糟糕。

最佳答案

如果他们盲目地改变一些东西,使 noexcept 限定成为函数指针类型的一部分,他们就会破坏大量代码,无论是通用的还是非通用的。因此,存在后门。

In accord with P0021R1 ,任何指向 noexcept 限定函数的指针都可以隐式转换为指向非 noexcept 限定函数的指针。指向具有此类限定条件的成员函数的指针也是如此。

确实,提案中大约 2/3 的语言似乎是为了建立这个漏洞。

关于c++ - noexcept 成为类型系统的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38581776/

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