Ste*_*mba 2 c++ lambda if-statement conditional-operator
我正在阅读 C++ 入门第 5 版,第 10 章(lambdas 表达式),这是一个旨在用绝对值替换向量中的负值的程序。
transform(vi.begin(), vi.end(), vi.begin(),
[](int i) { if (i < 0) return -i; else return i; });
Run Code Online (Sandbox Code Playgroud)
作者说:
这段代码无法编译,因为 lambda 将返回类型推断为 as
void但我们返回了一个值,为了解决这个问题,我们必须使用尾随返回类型。
但是当我在 Windows 上用 GNU GCC Compiler 编译这段代码时,它运行良好。
作者还说:
这个版本编译是因为我们不需要指定返回类型,因为可以从条件运算符的类型推断出该类型。
transform(vi.begin(), vi.end(), vi.begin(),
[](int i) { return i < 0 ? -i : i; });
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是: