Bir auto
parametreniz olamaz . Temelde iki seçeneğiniz var:
Seçenek 1: Gösterdiğiniz std::function
gibi kullanın .
Seçenek # 2: Bir şablon parametresi kullanın:
template<typename F>
void f(F &lambda) { }
Seçenek # 2, bazı durumlarda, gömülü lambda işlevi nesnesi için potansiyel bir yığın tahsisini önleyebildiğinden daha verimli olabilir, ancak yalnızca f
bir şablon işlevi olarak bir başlığa yerleştirilebilirse mümkündür . Ayrıca, herhangi bir şablonda olduğu gibi, derleme sürelerini ve I-cache ayak izini artırabilir. Lambda işlev nesnesi yeterince küçükse, std::function
nesnede satır içi olarak gösterilebileceğinden, bunun da etkisinin olmayabileceğini unutmayın .
const&
?