Fitur C ++ 11 di Visual Studio 2012

94

Versi pratinjau Visual Studio 2012 (versi berikutnya setelah VS2010) sekarang tersedia .

Adakah yang tahu apa fitur C ++ 11 baru yang didukungnya? (Saya tidak dalam posisi untuk mencobanya saat ini).

Komandan Tinggi4
sumber
18
Dan aku kecewa sekali lagi. Sekarang untuk mengetahui cara menggunakan GCC / GDB dengan lebih lancar ...
GManNickG
3
GMan: Menurut saya, penggunaan fitur-fitur baru cukup mencengangkan, tentu saja mengingat dari mana asalnya (pikirkan VC 6.0 dan gemetar) ... Tentu, dukungan GCC luar biasa, tetapi ada banyak tempat lain. kurang juga ...
rubenvb
5
@rubenvn: Hanya ingin tahu, di tempat apa saja GCC kurang?
HighCommander4
5
GCC tidak kurang dalam mendukung C ++ 11, ini cukup banyak di umatch. VC11 kurang lucu. Itu bahkan tidak dekat.
987 S
9
@ HighCommander4: Di tempat apa saja GCC kurang? Alat debugging.
pengguna541686

Jawaban:

77

Perlu dicatat bahwa Visual Studio 2010 sudah memiliki sedikit dukungan C ++ 11 awal. Jadi untuk meringkas apa yang sudah ditautkan dalam jawaban lain, berikut adalah apa yang baru di Visual Studio 11 yang bukan merupakan bagian dari Visual Studio 2010:

Pada awal November 2012, Microsoft mengumumkan pada Visual C ++ Compiler November 2012 CTP , yang menambahkan lebih C ++ 11 fungsi untuk Visual Studio 2012:

Joel Coehoorn
sumber
20
Itu sebenarnya cukup mengecewakan ... Saya berharap untuk templat variadic dan inisialisasi seragam, yang telah didukung GCC selama dua setengah dan satu setengah tahun, masing-masing ...
HighCommander4
@ Inisialisasi seragam tinggi bahkan tidak ada dalam daftar fitur mereka dalam spesifikasi (bahkan tidak muncul dengan "Tidak"). Apakah mungkin ada nama lain untuk itu?
Joel Coehoorn
2
Saya sangat menyukai fungsi safe print dan printf tipe saya. Saya sangat berharap bahwa 2011 akhirnya akan menambahkan template variadic. Variadik yang hilang juga mempengaruhi emplace_backdan make_shared. Apakah ada sesuatu tentang cl yang membuatnya sangat sulit untuk menerapkan variadics?
deft_code
5
Herb Sutter mengatakan dalam sesi Build keduanya ( channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T ) bahwa mereka mencoba membuat template variadic ... mencoba dan mencoba dan mereka tidak selesai tepat waktu untuk versi ini. Ini juga memengaruhi hal-hal lain yang dapat mereka lakukan.
Kate Gregory
2
Berikut adalah perbandingan yang baik dari berbagai kompiler pada C ++ 11. wiki.apache.org/stdcxx/C++0xCompilerSupport Aturan yang baik: jangan gunakan C ++ 11 di GCC dan perkirakan akan terkompilasi di VS2012
Chris Hill
25

Berikut adalah daftar fitur dari versi studio visual yang baru dan berikut adalah daftar dari apa yang didukung oleh semua kompiler

Drahakar
sumber
2
Jangan terlalu pilih-pilih, tetapi tautan kedua Anda menunjukkan dukungan x0 bukan dukungan 11.
N_A
Anda benar, tetapi masih memberikan gambaran yang bagus tentang semua kompiler dan apa yang mereka implementasikan.
Drahakar
Hanya berpikir itu akan bagus untuk dijelaskan. Saya setuju itu berguna.
N_A
1
Mudah-mudahan, ini adalah wiki, seseorang yang diberitahu mungkin ingin memperbaruinya ^. ^
Drahakar
2
Yah, sepertinya itu baru saja diperbarui (kegembiraan bagi dunia ...) :)
Drahakar
6

Ada daftarnya di sana . Yang paling mengejutkan saya adalah fitur-fiturnya yang masih hilang :

  • Mereka mengatakan mereka akan menerapkan template variadic sebagai prioritas dan mereka tidak melakukannya.
  • Kita masih harus mendeklarasikan konstruktor move secara manual untuk banyak kelas, karena tidak ada konstruktor yang mendelegasikan.
  • Mewarisi konstruktor tidak ada, dan ini benar-benar diperlukan untuk beberapa kode
  • Tidak ada inisialisasi yang seragam, khususnya tidak ada daftar penginisialisasi. Ini menyebalkan bila Anda telah menggunakannya dengan g ++.
  • Masih tidak ada utas penyimpanan lokal yang benar. Jadi Anda terjebak boost::thread_specific_ptruntuk sementara waktu.

Semua fitur lain yang masih hilang sebagian besar adalah hal-hal yang tanpanya Anda dapat hidup. Apa yang saya cantumkan di sini adalah apa yang mengganggu saya setiap hari saat bekerja dengan VS10. Sangat menjengkelkan karena mereka tidak bekerja sama sekali pada kompiler.

EDIT: Saya juga akan menambahkan bahwa emplace_back(satu fitur hebat untuk wadah perpustakaan standar) tidak diterapkan dengan benar.

Alexandre C.
sumber
6
Mereka membuat template variadic sebagai prioritas. Itu sebabnya, ketika templat variadic tidak selesai tepat waktu, fitur bahasa lainnya juga tidak selesai. (Kecuali, ternyata, untuk skunkworks range-for.)
Kate Gregory
4
? Saya benar-benar tidak bisa hidup tanpa inisialisasi anggota data non-statis.
Trass3r
Masalah dengan template variadic adalah standarnya berubah terlambat dan mereka tidak punya cukup waktu untuk mengulang fitur itu sepenuhnya.
Ark-kun
5

Selama GoingNative pada Feb 2012, STL mengumumkan bahwa range-for akan tersedia dalam VS11 dimulai dengan versi beta, yang diharapkan pada 29 Feb. Sebuah rekaman pembicaraan tersedia. "The Reveal" berada pada tanda satu jam 38 menit.

Kate Gregory
sumber