编译器错误 C3499
已指定返回类型为 void 的 lambda 无法返回值
当将 void
指定为返回类型的 lambda 表达式返回值时,编译器产生此错误;或者当 lambda 表达式包含多条语句并返回一个值,但是未指定其返回类型时也会产生此错误。
更正此错误
请勿从 lambda 表达式返回值,或
提供 lambda 表达式的返回类型,或
将构成 lambda 表达式主体的语句合并成一条语句。
示例
以下示例将生成 C3499,因为 lambda 表达式的主体包含多条语句并返回一个值,但 lambda 表达式未指定返回类型:
// C3499a.cpp
int main()
{
[](int x) { int n = x * 2; return n; } (5); // C3499
}
以下示例演示 C3499 的两个可能的解决方法。 第一个解决方法是提供 lambda 表达式的返回类型。 第二个解决方法是将构成 lambda 表达式主体的语句合并成一条语句。
// C3499b.cpp
int main()
{
// Possible resolution 1:
// Provide the return type of the lambda expression.
[](int x) -> int { int n = x * 2; return n; } (5);
// Possible resolution 2:
// Combine the statements that make up the body of
// the lambda expression into a single statement.
[](int x) { return x * 2; } (5);
}
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈