Contoh-contoh yang saya temukan yang menangkap this
dalam lambda menggunakannya secara eksplisit; misalnya:
capturecomplete = [this](){this->calstage1done();};
Tetapi tampaknya juga memungkinkan untuk menggunakannya secara implisit; misalnya:
capturecomplete = [this](){calstage1done();};
Saya menguji ini di g ++, dan dikompilasi.
Apakah ini standar C ++? (dan jika ya, versi yang mana), atau apakah itu suatu bentuk ekstensi?
this
dan menggunakannya dalam lambda yang mungkin juga menjadi alasan untuk menggunakannya secara eksplisit
this->
secara eksplisit, yaitu untuk memastikan bahwa nilai yang ditangkap secara eksplisit digunakan secara eksplisit. Catatan yang[](){ calstage1done(); }
tidak sah, karenathis
tidak akan ditangkap; tapi ketika menangkapthis
secara eksplisit, itu mengejutkan bagi tubuh fungsi untuk tampil sekilas tidak benar-benar menggunakan nilai ditangkap:[this](){ calstage1done(); }
.