Ala*_*lan 4 c++ language-lawyer c++20
我编写了以下程序,该程序使用 msvc 编译,但不使用 gcc 和 clang 编译。 演示
int main() {
constexpr auto func = []()constexpr { return 1; };
auto i = []{return func();};
}
Run Code Online (Sandbox Code Playgroud)
我想知道这里的编译器是哪个?
海湾合作委员会 说:
<source>: In lambda function:
<source>:3:28: error: 'func' is not captured
3 | auto i = []{return func();};
| ~~~~^~
<source>:3:15: note: the lambda has no capture-default
3 | auto i = []{return func();};
| ^
<source>:2:20: note: 'constexpr const main()::<lambda()> func' declared here
2 | constexpr auto func = []()constexpr { return 1; };
|
Run Code Online (Sandbox Code Playgroud)
MSVC 似乎就在这里。
captures - 零个或多个捕获的逗号分隔列表,可以选择以捕获默认值开头。
lambda 表达式可以读取变量的值而不捕获它,如果变量
- 具有 const 非易失性整型或枚举类型,并且已使用常量表达式进行初始化,或者
- 是 constexpr 并且没有可变成员。
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |