Hlavní navigace

Tak nám schválili C++0x

19. 8. 2011 9:01 (aktualizováno) zboj

Kdo používá C++, asi už zaregistroval, že byl schválen nový standard C++, dříve označovaný C++0× (a nyní C++11). Nemá cenu popisovat, co je nového, neboť je toho hodně a lze si o tom přečíst jinde. Pro ty, kdo se o donedávna ještě nehotový standard zatím nezajímali, uvedu, s jakými překladači si jej můžou vyzkoušet a s jakými omezeními.

Visual Studio 2010 má velmi dobrou podporu nových syntaktických konstrukcí a také novinek v STL (z nichž některé možná znáte z knihovny boost). Jen je škoda, že například lambda výrazy nelze v C++/CLI používat jako delegáty pro managed kód (to by bylo opravdu hezké). I tak ale nelze Microsoftu upřít snahu implementovat C++0× a jakmile si zvyknete, těžko byste se k původní syntaxi vraceli (jak je hezké např. stručné a výstižné auto místo std::map<std::string,std::vector<int> >::const_iterator).

GCC také podporuje C++0× už nějakou dobu, já používal GCC 4.5 a nyní používám verzi 4.6. Podpora je jako u VS2010 rozsáhlá, včetně rozšíření knihovny STL. Pokud pracujete pod OS X, musíte si stáhnout novější verzi GCC (např. z MacPorts), Apple se svým Xcode dodává jen postarší verzi 4.2 (a tak to asi i zůstane, protože přešel na LLVM).

LLVM podporuje C++0× jen částečně (přednost při implementaci má Objective-C). Můžete používat např. auto a nové věci z STL (jmenný prostor je std::tr1), ale na lambda výrazy zapomeňte (Apple nás takto nutí používat své „bloky“). Obecně nelze LLVM pro vývoj v C++0× doporučit, ale pro základní experimenty (ve verzi 2.1) stačí.

Dobře podporuje nový standard překladač Intelu (ICC), opět včetně rozšíření STL. Pro Linux je zdarma (a open source), pokud z nějakého důvodu nechcete použít GCC, je dobrou volbou. Rovněž pod OS X v Xcode lze překladač Intelu používat, ovšem Objective-C (kterému se na Macu asi nevyhnete) překládat neumí.

Sdílet