C++0x
6 kwietnia 2009W weekend postanowilem poszperać, jaki jest status specyfikacji
Specyfikacja wydaje się „lądować”… Komitet ISO wydał coś, co nazywa się „szkicem do głosowania międzynarodowego” (Committee Draft for international ballot). Zmiany opisane są m.in w Wikipedii. Nie przeczytałem jeszcze tego (draft ma 1300 stron, artykuł na Wiki też najkrótszy nie jest), ale w sumie: niezbyt mi się podoba. Na pierwszy rzut oka wygląda, jakby ktoś tam w Komitecie był zafascynowany Pythonem.
To znaczy – to nie zupełnie tak. Te rzeczy są fajne, tylko tak się zastanawiam, czy mimo wszystko nie pojawi się za dużo nowych słów kluczowych, nowych konstrukcji. I kiedy to wszystko trafi do GCC, MS CL i innych? No i kiedy to trafi do rvct… Obawiam się, że pracując przy środowiskach osadzonych, pisząc przenośny kod albo taki, który oprócz VS11 będzie się musiał kompilować na 2010 i 2008, C++0x nie będzie żadną opcją.
Moi ulubieńcy:
- typedef templates: (template< typename second> using TypedefName = SomeType<OtherType, second, 5>;)
- multithreading.
- initializer lists (std::vector<std::string> v = { „xyzzy”, „plugh”, „abracadabra” };)
Największa wg mnie porażka?
- move constructor. Coś takiego jak pewien znany moim znajomym steal constructor.
No i na koniec, odrobina Pythona:
int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
x *= 2;
}
Ah, nie! to C++0x!…
Update: Committee Draft z marca 2009. Dodatkowo, wszystkie dokumenty komitetu oraz dokumenty z roku 2009.














