Old C++ VS C++11, 14, 17

Xxxxxx

Old C++ VS C++11, 14, 17
« kdy: 04. 09. 2018, 06:10:47 »
Tady to je furt rust, go, java, c#.

Ale co vy C++kari, jedete postaru, nebo v C++17, jak jste si zvykli, kdy jste poprve zjistili, ze je C++11? Kam az to povede, zmeni se C++ postupne v "Rust"?


Xxxxxx

Re:Old C++ VS C++11, 14, 17
« Odpověď #1 kdy: 04. 09. 2018, 06:12:50 »
Jak se vam libi boost?

n

Re:Old C++ VS C++11, 14, 17
« Odpověď #2 kdy: 04. 09. 2018, 06:56:07 »
Osobni nazor: Dneska uz jedine c++14 a novejsi, boost fuj.
C++ se zmenilo hodne. Da se v nem dneska psat uplne jinym zpusobem, nez ve starem C. Na raw pointry skoro clovek nemusi narazit, pokud pouziva nove featury.

oss

Re:Old C++ VS C++11, 14, 17
« Odpověď #3 kdy: 04. 09. 2018, 07:31:53 »
U mna to bol skok, povodne som zacinal na old C++, potom som robil dlhodobo ine jazyky, a nasledne som sa vratil k C++11/14 a bol to uplne iny svet.
Na pointerovu aritmetiku clovek nenarazi, na pointre len ked vytvara pole, sprava pamete sa stala zrazu neuveritelne jednoducha a intuitivna (uniq_ptr, moove constructor), pridana podpora funkcionalnych prvkov, const expressions,...
Prosto parada.

aaaa

Re:Old C++ VS C++11, 14, 17
« Odpověď #4 kdy: 04. 09. 2018, 08:10:25 »
me tak napadlo, ze misto move by se mohl pouzit nejaky znak.
jako je = bezne copy, tak neco by mohlo byt pro move, neco jako <=<


JSH

Re:Old C++ VS C++11, 14, 17
« Odpověď #5 kdy: 04. 09. 2018, 08:28:43 »
me tak napadlo, ze misto move by se mohl pouzit nejaky znak.
jako je = bezne copy, tak neco by mohlo byt pro move, neco jako <=<
Tím myslíš, že by
Kód: [Vybrat]
a = std::move( b )
šlo zkrátit na
Kód: [Vybrat]
a <=< b
Byl by to nový operátor s vlastním přetěžováním? Nebo jenom syntaktický cukr, co by využíval současný operátor přiřazení?

Osobně si myslím, že to za to nestojí. Při přiřazování používám move jen výjímečně. Daleko častěji přesouvám při předávání parametrů, nebo v konstruktorech. A navrch se při přiřazování použije move automaticky, pokud přiřazuju třeba návratovou hodnotu funkce. Takže by to bylo užitečné akorát při přesunu z jedné proměnné do druhé.

MarSik

Re:Old C++ VS C++11, 14, 17
« Odpověď #6 kdy: 04. 09. 2018, 08:58:39 »
Taky musím říct, že "znovu-objevení" C++11 a 14 byl velký skok a příjemné překvapení.

JSH

Re:Old C++ VS C++11, 14, 17
« Odpověď #7 kdy: 04. 09. 2018, 09:00:15 »
A jinak k původní otázce, C++14/17 je úplně jiný jazyk, než to původní. Píše se v tom výrazně líp. Že se už nemusím mrcasit s new/delete je fajn, ale to šlo s knihovníma smart pointerama i postaru. To, jak vylepšili auto je fakt supr.
Třeba
Kód: [Vybrat]
auto [iter, inserted] = muj_set.insert( ... );
nebo
Kód: [Vybrat]
std::lock_guard lock( muj_mutex ); // překladač sám doplní typ do šablony
nebo se konečně dají pořádně vnořovat namespacy
Kód: [Vybrat]
namespace foo::bar::baz {
}
A třeba při použití variadických šablon a "if constexpr" se už šablonový kód dá občas i číst. :)

Madafa

Re:Old C++ VS C++11, 14, 17
« Odpověď #8 kdy: 04. 09. 2018, 09:01:10 »

JSH

Re:Old C++ VS C++11, 14, 17
« Odpověď #9 kdy: 04. 09. 2018, 09:16:29 »
Kód: [Vybrat]
a <=< b

To už je, říká se tomu https://cs.wikipedia.org/wiki/Brainfuck
Tak zlé by to zas nebylo, ale pořád to není nic, co bych v c++ viděl rád. Kór když to porovnám třeba s novým "spaceship" operátorem <=> pro porovnávání. Ten ušetří kopec práce.

Sten

Re:Old C++ VS C++11, 14, 17
« Odpověď #10 kdy: 04. 09. 2018, 09:29:07 »
Kromě výše uvedeného mě také velmi potěšil for-each a přidání inicializátoru do if a while:
Kód: [Vybrat]
if (auto code = service.call(); code.is_success()) {
    …
}

Bacsa

Re:Old C++ VS C++11, 14, 17
« Odpověď #11 kdy: 04. 09. 2018, 10:09:26 »
Opravdovou revolucí jsou (budou) koncepty. Jinak kromě auto a inference parametrů šablon (tady je clang dokonce dál než g++) jsou fajn nové kousky v STL jako any a variant.

Re:Old C++ VS C++11, 14, 17
« Odpověď #12 kdy: 04. 09. 2018, 13:09:59 »
Citace
Ale co vy C++kari, jedete postaru, nebo v C++17, jak jste si zvykli, kdy jste poprve zjistili, ze je C++11? Kam az to povede, zmeni se C++ postupne v "Rust"?

Staré standardy, tedy C++98 a C++03 byly dobré. Ale C++11, C++14 a C++17 přinášejí velmi dobrá vylepšení.

Přechod na poslední standard není problém, C++ ctí až puntičkářsky zpětnou kompatibilitu, takže přechod směrem dopředu je bezproblémový a hladký.

Re:Old C++ VS C++11, 14, 17
« Odpověď #13 kdy: 04. 09. 2018, 13:11:14 »
Citace
Jak se vam libi boost?

Nelíbí. Boost přináší řadu knihoven velmi proměnlivé kvality. Ale hlavně boost je spíše laboratoř pro to, co přidat do standardu C++, spíše než cokoli jiného.

x14

  • ***
  • 182
    • Zobrazit profil
    • E-mail
Re:Old C++ VS C++11, 14, 17
« Odpověď #14 kdy: 04. 09. 2018, 14:05:33 »
Moderní C++ znamená, že jsem si v týmu prakticky zakázali new/delete.
Z boostu používám snad už jen wformat, jinak se držím STL.