gpt4 book ai didi

c++ - 带有 lambda 的 noexcept 运算符。 MSVC 错误?

转载 作者:行者123 更新时间:2023-12-03 10:04:31 25 4
gpt4 key购买 nike

似乎 MSVC 将所有 lambda 都视为 noexcept。此代码在 msvc 19.28 中编译(在编译器资源管理器中检查),但预计会在 gcc 中失败静态断言:

void foo() {
auto lambda_may_throw = [] {};

static_assert(noexcept(lambda_may_throw()));
}
有趣的是,我用谷歌搜索了一下,但找不到关于这个问题的任何信息。这真的是 msvc 错误还是只是我没明白什么?

最佳答案

该行为仅在 /permissive 中观察到.
使用 /permissive- 编译时,断言触发。
因此,它可能是支持旧版 Visual Studio 代码的兼容性扩展。
(您也可能观察到它以 /std:c++latest 失败,并使用 /std:c++17 编译而未指定 /permissive- 。这不是标准的差异,而是 /std:c++latest 默认也暗示 /permissive-)

关于c++ - 带有 lambda 的 noexcept 运算符。 MSVC 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66087167/

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