Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
[]()->auto& { return f(); } // возврат ссылкиint& (*fpi)(int*) = [](auto* a) -> auto& { return *a; }; // OK
#include <iostream>
#include <thread>
int main (int argc, char * argv [])
{
std::thread work {[] {std::cout << "Hard work!" << std::endl;} };
return 0;
}
#include <iostream>
#include <thread>
struct FunctionalObject
{
public:
void operator ()() {std::cout << "Hard work!" << std::endl;}
}
//
// Lot of code...
//
int main (int argc, char * argv [])
{
std::thread work {FunctionalObject ()};
return 0;
}
#include <iostream>
template <typename Callback>
void foo(Callback callback)
{
int bar = 1;
callback(bar);
}
int main(void)
{
int capture = 2;
struct {
int captured;
void operator () (int bar) {
std::cout << bar << captured;
}
} lambda = { capture };
foo(lambda);
return 0;
}
g++ -std=c++0x main.cppoptional
Either, List и остальные монады ;)typeof(short(2) + short(2)) == int — отличный выстрел, прямо в ногу!import "github.com/stroustrup/stl" в стиле Go). Для фич языка, которые должны взаимодействовать со стандартной библиотекой (например typeid), должной быть определено бинарное ABI.std::cout << "She said \"Hi!\"; // вывод: She said "Hi!"int& (*fpi)(int*) = [](auto* a) -> auto& { return *a; }; // OK
auto vglambda = [](auto printer) {
return [=](auto&& ... ts) { // OK: ts - это упакованные параметры функции
printer(std::forward<decltype(ts)>(ts)...);
};
};
auto p = vglambda( [](auto v1, auto v2, auto v3)
{ std::cout << v1 << v2 << v3; } );
p(1, 'a', 3.14); // OK: выводит 1a3.14
std::forward<decltype(ts)>
Обзор новых возможностей С++14: Часть 1