7

私のクライアントは、ソケットを介してデータストリームを受信する高性能で信頼性の高いサーバーを作成することを望んでいます。彼はそれが c++ であることを期待しています

フルタイムで C++ をやっていたのは久しぶりなので、少し読んでいます。Asio は c++ でのネットワーキングに適しているようで、c++11 は多くの新機能を備えた c++ の優れた新しいバージョンのようです。

私の質問: 両方を確実に使用することは可能ですか? それは理にかなっていますか?ラムダのような特定の c++11 機能を避けるべきですか?

4

4 に答える 4

7

2つ一緒に使用しても問題ありません。Boost と C++11 STL の両方で実装されているものについては、どちらを使用するかを選択できます。ほとんどの場合、ほとんど違いはありません。Boost を使用すると、C++03 プラットフォームにも移植できます (少なくとも、C++11 の機能を直接使用しない場合、コードのその部分は移植可能になります)。

Boost は、利用可能な C++11 機能を利用できるように慎重に設計されており、機能のない場所をサポートするための "ダムダウン" インターフェイスやパフォーマンスの低下を提供する必要はありません。

また、優れた非同期 I/O が必要な場合は、それを提供するためのライブラリが必要です。C++11 を使用しているかどうかに関係なく、Boost に勝るものはありません。

あなたの質問が「C++ 11 で Boost を使用したくない、または Boost で C++ 11 を使用したくない特定の理由があるか」である場合、答えはノーです。asio などの Boost が提供する機能が必要で、C++11 プラットフォームのみをサポートする必要がある場合、それらはアプリケーションに最適です。

于 2012-09-08T12:39:49.960 に答える
7

「避けるべきC++ 11の機能」は、主に計画されているターゲットコンパイラに基づいています。ラムダを避ける理由は見当たりません。すべての主要なコンパイラはすでにラムダをサポートしており、読みやすさが大幅に向上しています。

一方、関心のあるコンパイラによっては、可変個引数テンプレートや波括弧付きの初期化子リストなどを回避したい/回避する必要がある場合があります。

于 2012-09-08T12:46:05.710 に答える
6

参照してください、boost.asioはイベント駆動型プログラミング用のネットワークライブラリです-多くのコールバック、C++11ラムダはコールバックの記述を非常に簡単にします。

基本的に、C ++ 11とAsioの組み合わせにより、開発がはるかに簡単になり、コードがはるかにクリーンで読みやすくなります。

于 2012-09-08T13:47:19.067 に答える
2

asioのドキュメントでは、c++11のサポートについて具体的に言及しています

于 2012-09-09T19:19:19.907 に答える