#include #include #include #include #include #include using namespace std; double funkcja(double a) { return a; } int funkcja(int a) { return a; } //przykladowa funkcja szablonowa zgadujaca zwracany typ w zaleznosci od tego co sie w niej dzieje template auto wrapperFun(T t) -> decltype(funkcja(t)) { return funkcja(t); } int main() { //Wybrane elementy standardu C++11 //wyrazenia Lambda cout<<"== Wyrazenia Lambda =="< sum = [](double x, double y) { return x+y; }; cout<<"Sum: "< vec = {1, 5, 3}; //w C++11 nie trzeba dodawac do wektora przez push_back //iteracja po indeksach - tradycyjnie cout<<"Wektor po indeksach"<::iterator it = vec.begin(); it != vec.end(); it++) cout<<(*it)<<" "; cout< nie mamy dostepu do numeru iteracji //Bardziej zaawansowane kombinacje cout<<"== Wyrazenia Lambda jako elementy wektora =="< sum2 = [](double x, double y) { return x+y; }; auto sub2 = [](double x, double y) { return x-y; }; //dodajemy je do wektora vector vecLambda = {sum2, sub2, [](double x, double y) { return x*y; } }; //mozna tez dodac wyrazenie Lambda przez push_back auto div2 = [](double x, double y) { return x/y; }; vecLambda.push_back(div2); //iterujemy po wektorze vector lamNames = {"Dodawanie: ", "Odejmowanie: ", "Mnozenie: ", "Dzielenie: "}; int idx = 0; for(auto it : vecLambda) { cout<: "<