Erro do compilador C3498
'var': você não pode capturar uma variável que tenha um gerenciado ou WinRTtype
Não é possível capturar uma variável que tenha um tipo gerenciado ou um tipo do Windows Runtime em um lambda.
Para corrigir este erro
- Passe a variável gerenciada ou do Windows Runtime para a lista de parâmetros da expressão lambda.
Exemplos
O exemplo a seguir gera C3498 porque uma variável que tem um tipo gerenciado aparece na lista de captura de uma expressão lambda:
// C3498a.cpp
// compile with: /clr
using namespace System;
int main()
{
String ^ s = "Hello";
[&s](String ^ r)
{ return String::Concat(s, r); } (", World!"); // C3498
}
O exemplo a seguir resolve C3498 passando a variável gerenciada s
para a lista de parâmetros da expressão lambda:
// C3498b.cpp
// compile with: /clr
using namespace System;
int main()
{
String ^ s = "Hello";
[](String ^ s, String ^ r)
{ return String::Concat(s, r); } (s, ", World!");
}