C 0x 中的Lambda 捕獲和常數
在C 0x 中使用lambda 表達式時出現一個常見問題:
在C 0x 中使用lambda 表達式有一個常見問題:有辦法捕獲按值擷取變量,同時防止擷取的值變為const? C 語言標準指定按值擷取變數的 lambda 表達式以 const 方式執行此操作。這意味著捕獲的值無法在 lambda 內部修改。但是,在某些情況下,可能需要按值捕獲變量,但仍會修改其值。 例如,考慮一個具有非常量operator()方法的函式庫函子,我們想要捕捉並呼叫 lambda。以下程式碼將無法編譯:<code class="cpp">struct foo { bool operator () ( const bool & a ) { return a; } }; int main() { foo afoo; auto bar = [=] () -> bool { afoo(true); }; return 0; }</code>
<code class="cpp">auto bar = [=] () mutable -> bool { afoo(true); };</code>
以上是如何在 C Lambda 表達式中按值捕獲並修改捕獲的變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!