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ć).


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:


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


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.


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.




Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.