似乎 MSVC 将所有 lambda 都视为 noexcept。此代码在 msvc 19.28 中编译(在编译器资源管理器中检查),但预计会在 gcc 中失败静态断言:
void foo() {
auto lambda_may_throw = [] {};
static_assert(noexcept(lambda_may_throw()));
}
Run Code Online (Sandbox Code Playgroud)
有趣的是,我用谷歌搜索了一下,但无法找到有关此问题的任何信息。这真的是 msvc 错误还是只是我没明白什么?