2009-09-12 5 views
9

Кто-нибудь пользуется поддержкой GCC 4.4.0 C++0x? Я думаю об использовании его с последним MinGW, но я не уверен, достаточно ли он достаточно зрелый.Использование GCC в C++ 0x режиме в производстве?

Я заинтересован в:

  • TR1 поддержки
  • авто
  • инициализатора списки
+6

Поддержка TR1 должна быть безопасной, так как она предшествует C++ 0x. Авто кажется довольно безвредным. Даже если есть ошибки в его реализации, они скорее всего будут проявляться в виде простых ошибок типа ошибки, а не ошибок во время выполнения. – jalf

ответ

4

IMHO, TR1 и auto безопасны в использовании. В случае auto это была одна из первых функций, которая должна быть включена в стандарт и является относительно небольшим изменением языка. Поэтому у меня не было бы проблем с этим.

Я был бы немного более нерешительным относительно использования initializer lists. На некоторых других форумах (например, comp.lang.C++. Moderated) есть вопросы об их поведении и о том, что они могут измениться ближе к выпуску стандарта.

4

Я не использую GCC 4.4.0 C++ 0x поддержку в производстве, но Я использую функции TR1 с помощью библиотеки Boost http://www.boost.org/.

Библиотека Boost хорошо протестирована и часто используется в производственных средах. Если вы конвертируете в стандарт C++ 0x позже, единственное, что вам нужно сделать, это изменить ваши включенные директивы http://www.boost.org/doc/libs/1_40_0/doc/html/boost_tr1.html.

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

2

MinGW просто не скомпилируется с '-std = C++ 0x'. Достаточно странно, '-std = gnu ++ 0x' работает. Во всяком случае, это кажется багги, и я не буду рассчитывать на это.

+1

Полагаю, что ошибка связана с отсутствием широкоформатных функций, таких как vwsprintf, правильно? Это происходит с -std = C++ 98 или -ansi, это хорошо известная ошибка MinGW. Ничего особенного C++ 0x. –