Расскажите про опыт работы с библиотекой Boost
Что проверяют
Знаете ли вы Boost как набор разных библиотек, а не как одну зависимость, и понимаете ли цену её подключения. Заодно смотрят, следите ли вы за стандартом: половина того, за чем раньше шли в Boost, давно лежит в std.
Как отвечать
Перечислите модули, которые правда трогали, и задачу каждого:
Boost.Asioэто асинхронный ввод-вывод поверхio_context, на нём же стоитBoost.Beastс HTTP и WebSocket;Boost.Serialization,Boost.Program_options,Boost.MultiIndex,Boost.Interprocessзакрывают то, чего в стандарте нет;Boost.Signals2это сигналы и слоты с управлением временем жизни подписки черезscoped_connection;Boost.Testкак тестовый фреймворк.
Отдельно скажите, что уехало в стандарт: умные указатели, optional, variant, any, filesystem, потоки, chrono. Брать boost-версию там, где доступна стандартная, сегодня нужно разве что ради старого компилятора.
Про сборку: часть библиотек header-only, часть требует линковки. Отсюда практические минусы: время компиляции растёт заметно, версия из дистрибутива редко совпадает с нужной, а смешивать объектные файлы, собранные разными версиями Boost, нельзя.
boost::asio::io_context io;
boost::asio::steady_timer t(io, std::chrono::seconds(1));
t.async_wait([](auto ec) { /* ... */ });
io.run();Где спотыкаются
Говорят, что Boost ускорил приложение, и называют долю прироста. Boost даёт выразительность и готовые алгоритмы, а скорость приходит от смены модели работы, например от асинхронного ввода-вывода вместо потока на соединение. Так и стоит формулировать, без выдуманных цифр.
Второе: тянут Boost туда, где уже есть стандартная замена. Вопрос «зачем boost::shared_ptr при живом std::shared_ptr» задают почти всегда, и ответ «так было в проекте» звучит слабее, чем ответ про требуемый стандарт компилятора.
Третье: не различают header-only и компилируемые части, поэтому на вопрос про линковку и совместимость собранных объектных файлов отвечают наугад. Про Boost.Asio полезно помнить и то, что сам по себе io_context не делает ваши обработчики потокобезопасными.