Wpis z mikrobloga

await - nowe zabawka, która może się pojawić w c++17:

auto foo() {
return async([] {
this_thread::sleep_for(500ms);
return 5;
});
}
auto bar() {
auto value1 = await foo();
cout << value1 << endl;
auto value2 = await foo();
cout << value2 << endl;
return value1 + value2;
}
int main() {
auto f = bar();
cout << "main" << endl;
cout << f.get() << endl;
}

prawie jak c#.
jeśli kogoś interesuje, to jest już dostępne w visual studio 2015 jako std::experimental. w innych kompilatorach pewnie też.

#it #programowanie #cpp
  • 9
@ly000: Daję plusa, bo cenna ciekawostka. Jednak upodabnianie do c# (skoro tak twierdzisz, bo ja go akurat nie znam) wcale mi się nie podoba. Elementami składni czynione są rzeczy, które dałoby się zaprojektować tak, aby z punktu widzenia składni stanowiły klasy lub funkcje. Prosta do opanowania w całości składnia była ogromną zaletą C++, a z nowymi wersjami niestety przestaje to być aktualne.
@tpablo: c++ jest chyba najtrudniejszym powszechnie używanym językiem. są tu rzeczy tak straszne, że programistom innych języków nawet się nie śniły. jak np. metaprogramowanie szablonowe (czy jak to tam przetłumaczyć), SFINAE, dziedziczenie wirtualne i wiele więcej. żeby czytać kod źródłowy standardowej biblioteki, to chyba nawet 5 lat doświadczenia w języku nie wystarczą, ale nikt nie każe ci od razu z tego wszystkie korzystać. zazwyczaj większość kończy klasach, polimorfizmie itp.

mówiąc o
@ly000: Z początku pomyślałem, że nawet dla tego całego await wprowadzanie nowego słowa kluczowego nie jest uzasadnione, bo mogłaby to być klasa bądź funkcja w którymś ze standardowych nagłówków. Ale po przeczytaniu ostatniego wyjaśnienia przyznaję, że nie miałem w tym racji. To jest tym gorzej -- zamiast myślenia o tym, w którym miejscu wartość funkcji z foo() będzie potrzebna, programista musi wykazać się szeroką wiedzą o składni. Programowanie w takich językach
@tpablo: lol, bez przesady. od nauczenia się na pamięć kilku keywordów inteligencji ci nie ubędzie. są one tworzone przede wszystkim dla wygody. tak poza tym, taka pierdoła nie powinna być dla programisty żadnym wyzwaniem. jak nie będziesz znał składni, nikt nie zabrani (raczej) napisać ci tego ręcznie za pomocą np. wcześniej poznanych funkcji, ale po co, skoro tak jest wygodniej i ładniej. poza tym, jak już coś się kuje z języka,
@ly000: Oczywiście, że można to tak ująć, ale liczba słów kluczowych i zakres biblioteki standardowej rosną co najmniej kilkukrotnie w porównaniu z C++03. Zamiast setek stron referencji języka mamy tysiące. Trudno oprzeć się wrażeniu, że jest tego przesyt i że twórcy języka nie wzięli ze sobą brzytwy Ockhama. Ja rozumiem założenie, że standard języka powinien zapewniać dostęp do wszystkiego tego, co na wielu platformach naprawdę ma sens. Oraz dążenie do