Compiler Error C3487
'return type': all return expressions must deduce to the same type: previously it was 'return type'
A lambda must specify its return type unless it contains a single return statement. If a lambda contains multiple return statements, they must all have the same type.
To correct this error
- Specify a trailing return type for the lambda. Verify that all returns from the lambda are the same type or can be implicitly converted to the return type.
Example
The following example generates C3487 because the return types of the lambda do not match:
// C3487.cpp
// Compile by using: cl /c /W4 C3487.cpp
int* test(int* pi) {
// To fix the error, uncomment the trailing return type below
auto odd_pointer = [=]() /* -> int* */ {
if (*pi % 2)
return pi;
return nullptr; // C3487 - nullptr is not an int* type
};
return odd_pointer();
}
See also
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for