【发布时间】:2019-07-01 04:33:22
【问题描述】:
这段代码
int(&foo)(int, int) = [](int a, int b) { return a + b; };
不编译,因为显然非常量引用不能用临时初始化。我应该把const放在哪里?
【问题讨论】:
-
为什么它需要是一个 const ref?通过复制,编译器将利用移动语义
-
它无法编译,因为 lambda 没有转换为引用。编译器错误具有误导性。
-
为什么不直接使用
auto foo = [](int a, int b) { return a + b; };? C++ 将移动而不是复制临时文件。 -
不需要,我只是好奇如何/是否可以做到。