Compiler Error C3498
'var': you cannot capture a variable that has a managed or WinRTtype
You cannot capture a variable that has a managed type or a Windows Runtime type in a lambda.
To correct this error
- Pass the managed or Windows Runtime variable to the parameter list of the lambda expression.
Examples
The following example generates C3498 because a variable that has a managed type appears in the capture list of a lambda expression:
// C3498a.cpp
// compile with: /clr
using namespace System;
int main()
{
String ^ s = "Hello";
[&s](String ^ r)
{ return String::Concat(s, r); } (", World!"); // C3498
}
The following example resolves C3498 by passing the managed variable s
to the parameter list of the lambda expression:
// C3498b.cpp
// compile with: /clr
using namespace System;
int main()
{
String ^ s = "Hello";
[](String ^ s, String ^ r)
{ return String::Concat(s, r); } (s, ", World!");
}