共用方式為


編譯器錯誤 C3491

'var': 無法在不可變的 Lambda 中修改傳值方式擷取

不可變的 Lambda 運算式不能修改以傳值方式擷取的變數的值。

更正這個錯誤

  • 請使用 mutable 關鍵字宣告 Lambda 運算式,或

  • 以傳址方式將變數傳遞到 Lambda 運算式的擷取清單。

範例

下列範例會產生 C3491,因為不可變的 Lambda 運算式主體修改了擷取變數 m

// C3491a.cpp

int main()
{
   int m = 55;
   [m](int n) { m = n; }(99); // C3491
}

下列範例藉由使用 mutable 關鍵字宣告 Lambda 運算式,解決了 C3491:

// C3491b.cpp

int main()
{
   int m = 55;
   [m](int n) mutable { m = n; }(99);
}

另請參閱

Lambda 運算式