Возможности C ++ 11 в Visual Studio 2012


94

Теперь доступна предварительная версия Visual Studio 2012 (следующая версия после VS2010) .

Кто-нибудь знает, какие новые функции C ++ 11 он поддерживает? (Я не могу сейчас это попробовать).


18
И я снова разочарован. Теперь, чтобы выяснить, как более плавно использовать GCC / GDB ...
GManNickG

3
GMan: Я думаю, что их понимание новых функций довольно удивительно, конечно, с учетом того, откуда они пришли (подумайте о VC 6.0 и вздрогните) ... Конечно, поддержка GCC поразительна, но есть много других мест, где она есть. тоже не хватает ...
rubenvb 06

5
@rubenvn: Просто из любопытства, в каких местах отсутствует GCC?
HighCommander4 06

5
В GCC нет недостатка в поддержке C ++ 11, она почти не имеет себе равных. VC11, как ни странно, не хватает. Это даже не близко.
987 S

9
@ HighCommander4: В каких местах отсутствует GCC? Инструменты отладки.
user541686 07

Ответы:


77

Стоит отметить, что в Visual Studio 2010 уже была небольшая поддержка раннего C ++ 11. Итак, чтобы подвести итог тому, что уже связано с другими ответами, вот что нового в Visual Studio 11, которое не было частью Visual Studio 2010:

В начале ноября 2012 года , Microsoft объявила о Visual C ++ Compiler ноября 2012 CTP , который добавляет больше C ++ 11 функциональные возможности Visual Studio 2012:


20
Это на самом деле очень разочаровывает ... Я надеялся на вариативные шаблоны и унифицированную инициализацию, которые GCC поддерживает в течение двух с половиной и полутора лет, соответственно ...
HighCommander4

@High uniform инициализации даже нет в их списке функций в спецификации (даже не отображается с «Нет»). Может быть, есть другое название для этого?
Joel Coehoorn

2
Мне очень нравятся мои безопасные функции печати и printf. Я действительно надеялся, что в 2011 году наконец появятся вариативные шаблоны. Отсутствие вариативности также влияет на emplace_backи make_shared. Есть ли что-то в cl, что особенно затрудняет реализацию вариативных чисел?
deft_code

5
Херб Саттер сказал во время своего второго сеанса сборки ( channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T ), что они пытались создавать вариативные шаблоны ... пробовали и пытались, но они не успели закончить для этой версии. Это повлияло и на то, что они еще могли делать.
Кейт Грегори

2
Вот хорошее сравнение разных компиляторов на C ++ 11. wiki.apache.org/stdcxx/C++0xCompilerSupport Хорошее правило: не используйте C ++ 11 в GCC и ожидайте, что он будет компилироваться в VS2012
Крис Хилл,

25

Вот список функций новой версии Visual Studio, а вот список того, что поддерживают все компиляторы.


2
Чтобы не быть слишком разборчивым, но ваша вторая ссылка показывает поддержку x0, а не поддержку 11.
N_A

Вы правы, но он по-прежнему дает хороший обзор всех компиляторов и того, что они реализовали.
Drahakar

Просто подумал, что было бы хорошо прояснить ситуацию. Я согласен, это полезно.
N_A

1
Надеюсь, это вики, кто-то проинформировал, что может захотеть обновить ее ^. ^
Drahakar

2
Ну вроде как будто недавно обновили (радость миру ...) :)
Drahakar

6

Существует список есть . Что меня больше всего поражает, так это то, что до сих пор отсутствуют :

  • Они сказали, что будут внедрять вариативные шаблоны в качестве приоритета, но не сделали этого.
  • Нам все равно придется объявлять конструкторы перемещения вручную для многих классов, поскольку конструкторы делегирования отсутствуют.
  • Конструкторы наследования отсутствуют, и это действительно необходимо для некоторого кода.
  • Нет единой инициализации, в частности списков инициализаторов. Это отстой, когда вы использовали их с g ++.
  • По-прежнему нет правильного локального хранилища потоков. Итак, вы застряли boost::thread_specific_ptrна какое-то время.

Все остальные функции, которые пока отсутствуют, - это в основном то, без чего вы можете жить. Я перечисляю именно то, что меня раздражает каждый день при работе с VS10. Это так раздражает, что они вообще не работали над компилятором.

РЕДАКТИРОВАТЬ: Я также добавлю, что emplace_back(одна отличная функция для стандартных библиотечных контейнеров) реализована неправильно.


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

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

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

5

Во время GoingNative в феврале 2012 года STL объявила, что диапазон будет в VS11, начиная с бета-версии, которая ожидается 29 февраля. Запись разговора имеется. «Разоблачение» находится на отметке один час 38 минут.




Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.