Giriş
Closure, lambda ile kullanılıyor. Bu yazıdan lambda konusuna değinmiyorum. Sadece closure sözdizimi üzerinde duracağım.
Closure sözdizimi şöyle. Capture ve mutable alanları mecburi değil.
Closure sadece odr-used değişkenleri capture etmek zorunda. const değişkenleri veya derleme zamanı değişkenleri capture etmeden de kullanabiliriz. Şöyle yaparız.
Closure - Capture By Reference yazısına taşıdım.
Closure, lambda ile kullanılıyor. Bu yazıdan lambda konusuna değinmiyorum. Sadece closure sözdizimi üzerinde duracağım.
Closure sözdizimi şöyle. Capture ve mutable alanları mecburi değil.
["CAPTURE"] PARAMETERS ["mutable"] [RETURN] { BODY }
C++11'de kullanılabilecek closure türleri şöyle[] Capture nothing (or, a scorched earth strategy?)
[&] Capture any referenced variable by reference
[=] Capture any referenced variable by making a copy
[=, &foo] Capture any referenced variable by making a copy,
but capture variable foo by reference
[bar] Capture bar by making a copy; don't copy anything else
[this] Capture the this pointer of the enclosing class
Odr-UsedClosure sadece odr-used değişkenleri capture etmek zorunda. const değişkenleri veya derleme zamanı değişkenleri capture etmeden de kullanabiliriz. Şöyle yaparız.
#include <iostream>
template<typename T> void foo(const int *, T f) {...}
int main()
{
const int data=0;
foo(&data,[](int baz){
return data;
});
}
1. Capture By ReferenceClosure - Capture By Reference yazısına taşıdım.
Hiç yorum yok:
Yorum Gönder