Funkcje języka C ++ 11 w programie Visual Studio 2012

94

Wersja preview Visual Studio 2012 (kolejna wersja po VS2010) jest już dostępna .

Czy ktoś wie, jakie nowe funkcje C ++ 11 obsługuje? (W tej chwili nie mogę tego wypróbować).

HighCommander4
źródło
18
I znowu jestem rozczarowany. Teraz, aby dowiedzieć się, jak
płynniej
3
GMan: Myślę, że ich wykorzystanie nowych funkcji jest dość zdumiewające, z pewnością biorąc pod uwagę ich pochodzenie (pomyśl o VC 6.0 i drżenie) ... Oczywiście, wsparcie GCC jest zadziwiające, ale jest wiele innych miejsc. też brakuje ...
rubenvb
5
@rubenvn: Tak z ciekawości, w jakich miejscach brakuje GCC?
HighCommander4
5
GCC nie jest pozbawione wsparcia dla C ++ 11, jest ono w dużej mierze sprzeczne. VC11 brakuje humoru. Nie jest nawet blisko.
987 S,
9
@ HighCommander4: W jakich miejscach brakuje GCC? Narzędzia do debugowania.
user541686

Odpowiedzi:

77

Warto zauważyć, że Visual Studio 2010 miało już sporo wczesnej obsługi C ++ 11. Podsumowując, co jest już połączone w innych odpowiedziach, oto nowości w Visual Studio 11, które nie były częścią Visual Studio 2010:

Na początku listopada 2012 roku, Microsoft ogłosił w Visual C ++ Compiler Listopad 2012 CTP , który dodaje bardziej c ++ 11 funkcjonalność Visual Studio 2012:

Joel Coehoorn
źródło
20
To właściwie rozczarowujące ... Liczyłem na szablony wariadyczne i inicjalizację ujednolicenia, które GCC obsługuje odpowiednio od dwóch i pół i półtora roku ...
HighCommander4
@High uniform inicjalizacja nie jest nawet na liście funkcji w specyfikacji (nie pojawia się nawet z "Nie"). Czy jest może na to inna nazwa?
Joel Coehoorn,
2
Uwielbiam bezpieczne drukowanie i funkcje printf mojego typu. Naprawdę miałem nadzieję, że 2011 wreszcie doda szablony wariadyczne. Brakujące wariadiki również wpływają emplace_backi make_shared. Czy jest coś w cl, co szczególnie utrudnia wdrożenie wariadiki?
deft_code,
5
Herb Sutter powiedział w swojej drugiej sesji budowania ( channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T ), że próbowali tworzyć szablony wariadyczne ... próbowali i próbowali, ale nie są gotowi na czas dla tej wersji. Wpłynęło to również na to, jakie inne rzeczy mogliby robić.
Kate Gregory
2
Oto dobre porównanie różnych kompilatorów w C ++ 11. wiki.apache.org/stdcxx/C++0xCompilerSupport Dobra zasada: nie używaj C ++ 11 w GCC i oczekuj, że skompiluje się w VS2012
Chris Hill
25

Oto lista funkcji nowej wersji programu Visual Studio, a tutaj lista funkcji obsługiwanych przez wszystkie kompilatory

Drahakar
źródło
2
Nie bądź zbyt wybredny, ale twój drugi link pokazuje obsługę x0, a nie obsługę 11.
N_A
Masz rację, ale nadal zapewnia dobry przegląd wszystkich kompilatorów i tego, co zaimplementowały.
Drahakar
Pomyślałem, że dobrze byłoby, gdyby było jasne. Zgadzam się, że jest to przydatne.
N_A
1
Miejmy nadzieję, że jest to wiki, ktoś poinformowany może chcieć ją zaktualizować ^. ^
Drahakar,
2
Cóż, wygląda na to, że został niedawno zaktualizowany (radość dla świata ...) :)
Drahakar
6

Jest tam lista . Najbardziej uderza mnie brakujące funkcje :

  • Powiedzieli , że priorytetowo będą wdrażać szablony wariadyczne, ale tego nie zrobili.
  • Nadal będziemy musieli ręcznie deklarować konstruktory przenoszenia dla wielu klas, ponieważ nie ma konstruktorów delegujących.
  • Konstruktory dziedziczące nie są obecne i byłoby to naprawdę potrzebne w przypadku niektórych kodów
  • Brak jednolitej inicjalizacji, w szczególności brak list inicjalizujących. To jest do bani, gdy użyłeś ich z g ++.
  • Nadal nie ma prawidłowego lokalnego magazynu wątków. Więc utknąłeś boost::thread_specific_ptrna chwilę.

Wszystkie inne funkcje, których jeszcze brakuje, to głównie rzeczy, bez których możesz żyć. Wymieniam tutaj to, co nęka mnie każdego dnia podczas pracy z VS10. To jest tak irytujące, że w ogóle nie pracowali nad kompilatorem.

EDYCJA: Dodam również, że emplace_back(jedna świetna funkcja dla standardowych kontenerów bibliotecznych) nie jest poprawnie zaimplementowana.

Alexandre C.
źródło
6
Zrobili priorytetowo szablony wariadyczne. Dlatego też, gdy różnorodne szablony nie zostały wykonane na czas, inne funkcje języka również nie zostały wykonane. (Z wyjątkiem, jak się okazuje, skunkworks-for.)
Kate Gregory,
4
? Naprawdę nie mogę żyć bez niestatycznych inicjatorów składowych danych.
Trass3r
Problem z szablonami wariadycznymi polega na tym, że standard zmienił się zbyt późno i nie mieli wystarczająco dużo czasu, aby całkowicie przerobić tę funkcję.
Ark-kun
5

Podczas GoingNative w lutym 2012, STL ogłosił, że Range-for będzie w VS11 począwszy od wersji beta, która ma nastąpić 29 lutego. Dostępne jest nagranie przemówienia . „The Reveal” jest po godzinie 38 minut.

Kate Gregory
źródło