Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Rozdział2
NowoczesnyC++
voidPrintArray(conststd::function<void(MyArray::value_type)>&myFunction)
{
MyArraymyArray{1,2,3,4,5};
std::for_each(myArray.begin(),
myArray.end(),
myFunction);
}
intmain()
{
automyClosure
=
[](auto&&number){
std::cout<<number<<std::endl;
};
std::cout<<typeid(myClosure).name()<<std::endl;
PrintArray(myClosure);
return0;
}
Możemyteraztworzyćdomknięciaiprzekazywaćjewnaszymprogramieprzyuży-
ciufunkcjiszablonu,takjakwlistingu2-22.Pozwalatododaćdonaszychprogramów
pewneakcenty,którychrealizacjabyłabyznacznietrudniejszawC++98.Listing2-23
pokazujemetodękopiowaniatablicydoobiektu
vector
poprzezwyrażenielambdawy-
korzystująceblokprzechwytujący.
Listing2-23.Używaniefunkcjiprzechwytywaniawyrażeńlambda
#include<algorithm>
#include<array>
#include<cstdint>
#include<functional>
#include<iostream>
#include<typeinfo>
#include<vector>
usingMyArray
=
std::array<uint32_t,5>;
usingMyVector
=
std::vector<MyArray::value_type>;
48