Ответ 1
Я могу только дать вам свой опыт работы в качестве разработчика, поскольку я строил против ультрасовременного С++ в Windows, используя Visual С++, практически для всех, а также для установки нескольких других компиляторов и IDE (включая создание Clang на Windows для Visual Studio 2012, 2012 CTP и предварительный просмотр 2013 года). Ниже приведен мой опыт вплоть до настоящего времени (13 августа 2013 г.), и он основан на Обсуждение Herb Sutter и каждый день работает с компилятором.
Быстрый
Выполнить в противоположном направлении Visual Studio/VС++. Поддержка С++ 11 медленная, и в настоящее время они раздавлены с точки зрения возможностей компилятора по сравнению с Clang и GCC.
Настоящий
Visual С++ С++ 11 (и поддержка С++ 14) сейчас находится за гранью. Им не хватает мощных функций, которые делают метапрограммирование шаблонов в больших С++ (using
выражениях в частности).
-
Использование не существует прямо сейчас. Я потратил часы и часы на перенос отличного кода С++ 11 с
using
на VС++, только чтобы он разбил его на определенные места, щелкнул или просто стал почти беспроблемным. -
Поддержка Variadic в CTP была ужасно ужасной, и, хотя она улучшилась для версии Visual Studio 2013 Preview для компилятора, она все еще довольно плоха при сложных вариационных и шаблонных выражениях, которые подчиняются стандарту (и компилируются в GCC и Clang).
-
=delete
и=default
в значительной степени исчезли из VС++; в надежде на ближайшее будущее, может быть, это сработает (и оно должно прийти "скоро-иш", согласно дорожной карте) (мне пришлось реализовать конструкторы r-value явно для многих простых классов вплоть до 8-классного наследования иерархия один раз. Это была худшая пощечина, когда я наблюдал, как пользователи GCC и Clang бесплатно получают всю мою явную жесткую кодировку с помощью=default
). -
Как удержание (в основном из-за кода ОС Windows и некоторых бинарных компиляций), Empty-Base-Class-Optomizations в VС++ не работает. Не ожидайте, что ваши размеры иерархии классов или макет члена будут оптимизированы как минимум (наблюдайте за порядком в
std::tuple
при упаковке типов переменных).
Это касается всех разочарований, с которыми я столкнулся до сих пор. Они работоспособны - мне приходится работать с ними каждый день, но если вам нужна отличная поддержка на С++, вы должны перейти на GCC или Clang и каким-то образом заставить его работать на вашем компьютере.
Будущее
Если вы действительно хотите С++ 11, вам нужно подождать около года, и даже тогда выпуск VС++ в Visual Studio 2013 по-прежнему будет отсутствовать в нескольких функциях (и не ожидайте, что они также будут безболезненными). VС++ в 2013 году также будет по-прежнему критически отсутствовать std:: move и явная поддержка r-value во многих местах, что делает его болезненным, когда вы ожидаете, что работа будет работать.
Предостережение
Если вы не являетесь сильным пользователем Vim, у вас мало вариантов, когда речь заходит о IDE, с которыми вы можете работать (что хорошо работает с GDB/GCC или Clang).
- QtCreator хорош, работает с MinGW и, как правило, достаточно полно, чтобы выполнить работу.
- Можно использовать Sublime Text, но вам придется написать свою собственную систему зданий или делегировать ее чему-то еще.
- Код:: Блокировка автозаполнения является неустойчивой и ведет себя странно, а сама среда IDE неудобно.
- Предполагается, что Eclipse хорош, но мой опыт с ним неуклюжий и странный, с нечетными входными задержками во время (несмотря на 8,00 ГБ i7 машины Haswell с использованием SSD).
- Visual Studio, как IDE, довольно прочная. Затем стек Visual Assist X сверху, и он хорошо работает для С++-кодирования. Это действительно единственная причина, по которой я продолжаю придерживаться этого, но я уже добился успеха в изучении Vim, поэтому я могу в основном вырезать Visual Studio вообще, когда придет время.
О библиотеках
Поддержка библиотеки в VС++ довольно полна (поскольку их сломанный компилятор позволяет им быть полным). Он имеет регулярное выражение, в то время как в большинстве других библиотек отсутствует несуществующая или сломанная поддержка регулярных выражений. Но это не означает, что библиотека VС++ отлично сочетается с некоторыми функциями С++ 11, в которых говорится, что она делает (изображение melak47).
И наконец
Если вы хотите, чтобы код, который, как вы знаете, будет работать в Windows, 100%, на всю оставшуюся вечность, вы, вероятно, захотите запрограммировать на VС++. Другое "преимущество" заключается в том, что код, который вы пишете в VС++, является наименьшим подмножеством С++/С++ 11, с которым вы можете писать, поэтому в конце он должен собираться повсюду. Разумеется, это противоречит самой идее использования красивого С++ 11 и наслаждается им, поэтому... умрите (я) разумно.