Функції C ++ 11 у Visual Studio 2012


94

Попередня версія Visual Studio 2012 (наступна версія після VS2010) є в даний час доступна .

Хтось знає, які нові функції C ++ 11 він підтримує? (На даний момент я не в змозі випробувати).


18
І я ще раз залишився розчарованим. Тепер, щоб зрозуміти, як більш вільно використовувати GCC / GDB ...
GManNickG

3
GMan: Я думаю, що їх використання нових функцій досить дивовижне, безумовно, з огляду на те, звідки вони беруться (думаю, VC 6.0 і здригаються) ... Звичайно, підтримка GCC дивує, але є багато інших місць, де це є також не вистачає ...
rubenvb

5
@rubenvn: Просто з цікавості, в яких місцях бракує GCC?
HighCommander4,

5
GCC не бракує підтримки C ++ 11, він майже не відповідає. VC11 з жахом не вистачає. Це навіть не близько.
987 S

9
@ HighCommander4: У яких місцях бракує GCC? Інструменти налагодження.
user541686

Відповіді:


77

Варто зазначити, що Visual Studio 2010 вже мав досить ранню підтримку C ++ 11. Отже, щоб підсумувати те, на що вже пов’язано в інших відповідях, ось що нового у Visual Studio 11, що не було частиною Visual Studio 2010:

На початку листопада 2012 року Microsoft оголосила про компілятор Visual C ++ від листопада 2012 року , який додає більше функціональних можливостей C ++ 11 до Visual Studio 2012:


20
Це насправді досить розчаровує ... Я сподівався на варіативні шаблони та рівномірну ініціалізацію, які GCC підтримує відповідно два з половиною та півтора роки відповідно ...
HighCommander4

@ Висока рівномірна ініціалізація навіть відсутня у їхньому списку функцій у специфікації (навіть не відображається з "Ні"). Чи існує інша назва цього?
Joel Coehoorn

2
Я дуже люблю свої функції безпечного друку та друку printf. Я дуже сподівався, що 2011 рік нарешті додасть варіативні шаблони. Відсутність варіадики також впливає emplace_backі make_shared. Чи є щось у cl, що особливо ускладнює впровадження варіадики?
deft_code

5
Херб Саттер сказав у своєму другому сеансі збірки ( channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T ), що вони намагалися робити різні варіанти шаблонів ... пробували і пробували, і вони не виконуються вчасно для цієї версії. Це вплинуло і на те, що ще вони могли робити.
Kate Gregory

2
Ось гарне порівняння різних компіляторів на C ++ 11. wiki.apache.org/stdcxx/C++0xCompilerSupport Хороше правило: не використовуйте C ++ 11 у GCC та очікуйте, що він компілюється у VS2012
Chris Hill

25

Ось список особливість нової візуальної версії студії і тут буде список того , що підтримує всі компілятори


2
Щоб не бути занадто прискіпливим, але ваше друге посилання показує підтримку x0, а не підтримку 11.
N_A

Ви маєте рацію, але це все одно дає хороший огляд усіх компіляторів та того, що вони реалізували.
Драхакар

Просто подумав, що було б непогано прояснити. Я згоден з тим, що це корисно.
N_A

1
Сподіваємось, це вікі, хтось інформований, можливо, захоче оновити її ^. ^
Драхакар,

2
Ну, схоже, нещодавно оновлено (радість світові ...) :)
Драхакар

6

Існує список є . Найбільше мене вражає те, чого ще немає :

  • Вони сказали, що застосовуватимуть варіативні шаблони як пріоритет, але цього не робили.
  • Нам все одно доведеться оголошувати конструктори переміщення вручну для багатьох класів, оскільки конструкторів делегування немає.
  • Конструктори успадкування відсутні, і це дійсно знадобиться для деякого коду
  • Відсутність єдиної ініціалізації, зокрема відсутність списків ініціалізаторів. Це відмовно, коли ви використовували їх з g ++.
  • Досі немає правильного локального сховища потоків. Отже, ви затрималися boost::thread_specific_ptrна деякий час.

Усі інші функції, яких ще немає, - це в основному речі, без яких можна жити. Те, що я перелічую тут, - це саме те, що мене дратує щодня при роботі з VS10. Це просто так дратує, що вони взагалі не працювали над компілятором.

EDIT: Я також додам, що emplace_back(одна чудова функція для стандартних бібліотечних контейнерів) не правильно реалізована.


6
Вони зробили варіативні шаблони пріоритетними. Ось чому, коли варіативні шаблони не виконувались вчасно, інші мовні функції теж не виконувались. (За винятком, як виявляється, для діапазону "skunkworks".)
Кейт Грегорі

4
? Я дійсно не можу жити без нестатичних ініціалізаторів даних.
Trass3r

Проблема варіативних шаблонів полягає в тому, що стандарт змінився занадто пізно, і у них не було достатньо часу, щоб повністю переробити цю функцію.
Арк-кун

5

Під час GoingNative у лютому 2012 року STL оголосив, що пропускна здатність буде в VS11, починаючи з бета-версії, яка очікується 29 лютого. Запис розмови є. "Розкриття" знаходиться на одній годині 38 хвилин.




Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.