Un client de la mine veut que je fournisse un serveur fiable élevé, qui reçoit des matrices de données via des sockets. Il s'attend à ce qu'il soit en C ++ p>
Cela fait longtemps que je faisais C ++ plein temps, donc je lisais un peu. ASIO semble être un bon pari pour la mise en réseau en C ++ et C ++ 11 semble être une excellente nouvelle version de C ++ avec de nombreuses nouvelles fonctionnalités. P>
Ma question: Est-il possible d'utiliser à la fois de manière fiable? Est-ce que ça fait du sens? Devrais-je éviter certaines fonctionnalités C ++ 11 telles que Lambdas? P>
4 Réponses :
Vous pouvez utiliser les deux d'entre eux avec aucun problème. Pour les choses mises en œuvre à la fois à Boost et au C ++ 11 stl, c'est votre choix qui à utiliser. Dans la plupart des cas, cela fait très peu de différence. Si vous utilisez Boost, vous serez également portable sur C ++ 03 plates-formes (au moins, cette partie de votre code sera si elle n'utilise pas directement C ++ 11 caractéristiques directement). P>
Boost a été soigneusement conçu pour pouvoir profiter des caractéristiques C ++ 11 où elles sont disponibles sans avoir à fournir une interface "muette" ou une performance médiocre pour supporter où elles ne sont pas. P>
Et si vous avez besoin de bons E / S asynchrones, vous avez besoin de la bibliothèque pour la fournir. Boost est assez difficile à battre, que vous utilisiez C ++ 11 ou non. P>
Si votre question est "y a-t-il une raison particulière, je ne voudrais pas utiliser boost avec C ++ 11 ou C ++ 11 avec boost", la réponse est non. Si vous avez besoin d'une fonctionnalité Boost fournit, comme ASIO, et il suffit de prendre en charge C ++ 11 plates-formes, alors ils sont une correspondance parfaite pour votre application. P>
Je fondrais "C ++ 11 Caractéristiques à éviter" principalement sur votre compilateur cible planifié. Je ne vois aucune raison d'éviter les lambdas - tous les compilateurs majeurs les soutiennent déjà et ils fournissent une amélioration substantielle de la lisibilité. P>
D'autre part, selon le (s) compilateur (s) que vous vous souciez, vous voudrez peut-être éviter des éléments tels que des modèles variadiques et / ou des listes d'initialistes conçues. P>
Une autre chose à faire attention est la prise en charge de Regex, la bibliothèque fournie avec ex. GCC 4.7 semble être complet, mais certaines choses telles que Regex_search Code> ne fonctionnent pas.
@jerryCoffin Compiler GCC serait mon meilleur pari vrai? (Je vais développer sur Mac et ciblera une boîte indéterminée (à partir de pourtant) UNIX). Ou clique est-il un choix viable encore? Je l'ai utilisé dans le développement de l'iPhone Xcode et il est difficile de ne pas être excité avec son analyseur statique
@TOAD: GCC est certainement pris en charge sur plusieurs plates-formes. À l'heure actuelle, Clang convient à OS / X, semi-raisonnable sur Linux, inutilisable sous Windows et n'a pas été porté à la plupart des autres plates-formes.
Voir, Boost.Asio est une bibliothèque réseau pour la programmation entraînée par événement - Beaucoup de rappels, C ++ 11 Lambda facilite la rédaction de rappels. P>
Fondamentalement Combinaison de C ++ 11 et ASIO permet de développer et de rendre votre code beaucoup plus propre et lisible p>
Les Lambdas sont également plus rapides que de faire des rappels via liés et certainement plus faciles que de rédiger des foncteurs personnalisés pour tout