Доступность библиотеки c ++ 0x в любом компиляторе? - PullRequest
4 голосов
/ 22 июня 2011

Стандарт, несомненно, займет годы, чтобы его внедрить, который воняет, потому что выглядит великолепно.Но я читал его, и, по крайней мере, дополнения к библиотеке (в частности, хеш-карты) были бы действительно полезны.В документации по g ++ я заметил, что могу получить 4.3 или выше и использовать флаг, чтобы запрашивать новые функции, какие бы они ни были, но мне было интересно, есть ли способ просто получить библиотеку.И тот факт, что в настоящее время встроено множество лучших улучшений, поистине великолепен, наконец, встроена приличная функция случайных чисел!

Итак, есть ли какие-то компиляторы, которые я могу использовать прямо сейчас, которые имеют достаточно полныйбиблиотека на месте, даже если она не может использовать некоторые интересные новые языковые функции, такие как авто?

Ответы [ 6 ]

7 голосов
/ 22 июня 2011

Если вы хотите стандартные расширения библиотеки, вы можете использовать Boost . В любом случае, усовершенствования новой стандартной библиотеки были в основном вдохновлены библиотеками Boost.

Что касается поддержки компиляторов, Visual Studio 2010 поддерживает подмножество стандарта C ++ 11 , GCC имеет , в настоящее время лучшая поддержка C ++ 11 , и Clang также принимает новый стандарт . Не знаю о других компиляторах, но я думаю, что они скоро последуют.

3 голосов
/ 22 июня 2011

Помимо GCC в режиме -std=c++0x с установленным по умолчанию libstdc ++ на всех платформах, поддерживаемых GCC, вы также можете использовать LLVM libc++, который хорошо работает на Linux / BSD / Mac, но еще не был перенесен на Windows .

3 голосов
/ 22 июня 2011

GCC с опцией -std=c++0x уже охватывает довольно хорошее подмножество C ++ 0x.Версия 4.4 уже довольно удобна в использовании, 4.6 даже более того.В нем отсутствуют псевдонимы шаблонов, но есть много чрезвычайно полезных языковых функций, а также очень большая часть библиотеки, которая полностью функциональна.

Вот полный список возможностей .

1 голос
/ 22 июня 2011

Некоторые из библиотек, и в частности та, которую вы упомянули здесь (unordered_map), были определены как часть технического обзора еще в 2003 году и были перенесены в стандарт C ++ 0x, в основном без изменений.Большинство компиляторов имеют библиотеки TR1, реализованные в пространстве имен std::tr1.

Другие библиотеки были взяты из других источников, Boost является большим источником библиотек для будущего стандарта (function, bind, * 1006).* ...), но это зависит от того, что вы хотите добавить в свой проект.

Относительно того, можете ли вы извлечь библиотеки из C ++ 0x и использовать их в не-C ++ 0xкомпилятор, вы, скорее всего, не сможете этого сделать, так как они будут использовать новые функции (например, конструкторы перемещения), и это не удастся скомпилировать.

1 голос
/ 22 июня 2011

GCC / libstdc ++ имеет большую часть библиотеки, но может потребоваться добавление tr1/ к путям включения (#include <tr1/unordered_map> для хэшированных карт).Он также помещает новую библиотеку в пространство имен std::tr1 вместо просто std.

(TR1 обозначает Технический отчет 1, который был отчетом, описывающим добавления библиотеки для C ++ 0x.)

0 голосов
/ 25 июня 2011

Вот ссылка, по которой вы можете найти поддержку c ++ 0x для большинства компиляторов

http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport

Список обновляется всякий раз, когда добавляется новая поддержка c ++ 0x. Как вы можете видеть, g ++ поддерживает максимальное количество функций C ++ 0x на данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...