2009-09-12 8 views
9

Est-ce que quelqu'un utilise le support GCC 4.4.0 C++0x en production? Je pense à l'utiliser avec le dernier MinGW, mais je ne suis pas sûr que ce soit assez mature.Utilisation du mode C++ 0x de GCC en production?

Je suis intéressé par:

  • TR1 soutien
  • auto
  • listes initialiseur
+6

La prise en charge TR1 doit être sûre, car elle est antérieure à C++ 0x. L'auto semble également sans danger. Même s'il y a des bogues dans sa mise en œuvre, ils se manifesteraient probablement comme des erreurs de type facile à corriger, plutôt que comme des bogues au moment de l'exécution. – jalf

Répondre

4

IMHO, support TR1 et auto sont sûrs à utiliser. Dans le cas de auto, c'était l'une des premières caractéristiques à être incluses dans la norme et est un changement relativement faible dans la langue. Je n'aurais donc aucun problème à l'utiliser.

Je serais un peu plus hésitant sur l'utilisation de initializer lists. Sur d'autres forums (par exemple, comp.lang.C++. Moderated) il y a des questions sur leur comportement et il est possible qu'ils se rapprochent de la publication de la norme.

4

Je ne suis pas en utilisant GCC 4.4.0 C++ 0x soutien dans la production, mais J'utilise les fonctionnalités TR1 avec l'aide de la bibliothèque Boost http://www.boost.org/.

La bibliothèque Boost est bien testée et souvent utilisée dans les environnements de production. Si vous convertissez à la norme C++ 0x plus tard, la seule chose que vous avez à faire est de modifier vos directives d'inclusion http://www.boost.org/doc/libs/1_40_0/doc/html/boost_tr1.html. À mon avis, il est actuellement préférable d'utiliser la bibliothèque Boost jusqu'à ce que la norme soit terminée. C'est un moyen beaucoup plus compilateur indépendant.

2

MinGW ne compilera tout simplement pas avec '-std = C++ 0x'. Assez étrange, '-std = gnu ++ 0x' fonctionne. Quoi qu'il en soit, il semble buggé et je ne compte pas sur lui.

+1

Je vais faire une supposition - l'erreur est due à l'absence de fonctions de caractères larges comme vwsprintf, non? Cela se produit avec -std = C++ 98 ou -ansi, c'est un bug MinGW bien connu. Rien de spécifique à C++ 0x. –

Questions connexes