Является ли boost asio и c ++ 11 хорошим сочетанием?

Мой клиент хочет, чтобы я создал высокопроизводительный, надежный сервер, который получает потоки данных через сокеты. Он ожидает, что это будет в C ++

Давненько я работал на С ++, поэтому немного читал. Asio кажется хорошим выбором для работы в сети на c ++, а c ++ 11 кажется отличной новой версией c ++ с множеством новых функций.

Мой вопрос: можно ли использовать оба надежно? Имеет ли это смысл? Должен ли я избегать некоторых функций C ++ 11, таких как лямбды?

7

Решение

Я бы основывал «особенности C ++ 11, которых следует избегать», в первую очередь на ваших запланированных компиляторах. Я не вижу причин избегать лямбда-выражений — все основные компиляторы уже поддерживают их, и они обеспечивают существенное улучшение читаемости.

С другой стороны, в зависимости от того, какой компилятор (-ы) вас интересует, вы можете / должны избегать таких вещей, как шаблоны с переменными параметрами и / или списки инициализированных фигурных скобок.

7

Другие решения

Вы можете использовать их вместе без проблем. Для вещей, реализованных как в Boost, так и в C ++ 11 STL, вы можете выбирать. В большинстве случаев это мало что меняет. Если вы используете Boost, вы также будете переносимы на платформы C ++ 03 (по крайней мере, эта часть вашего кода будет, если она не использует функции C ++ 11 напрямую).

Boost был тщательно спроектирован, чтобы иметь возможность использовать возможности C ++ 11 там, где они доступны, без необходимости предоставлять «тупой» интерфейс или низкую производительность для поддержки там, где их нет.

А если вам нужен хороший асинхронный ввод-вывод, вам нужна некоторая библиотека для его предоставления. Boost довольно сложно победить, используете ли вы C ++ 11 или нет.

Если ваш вопрос «Есть ли какая-то конкретная причина, по которой я бы не хотел использовать Boost с C ++ 11 или C ++ 11 с Boost», ответ будет отрицательным. Если вам нужна какая-то функция, предоставляемая Boost, например asio, и вам нужна только поддержка платформ C ++ 11, то они идеально подходят для вашего приложения.

7

Смотрите, boost.asio — это сетевая библиотека для событийно-ориентированного программирования — множество обратных вызовов, лямбда-код C ++ 11 делает написание обратных вызовов очень простым.

По сути, сочетание C ++ 11 и Asio значительно облегчает разработку и сделает ваш код намного более понятным и читабельным.

6

Асио документация в частности упоминается поддержка c ++ 11

2