Есть ли способ заставить Asio работать без Boost?

Я знаю, что есть версия ASIO, которая не включена в пространство имен Boost, но даже тогда ASIO зависит от Boost, но мне интересно, есть ли способ заставить ASIO работать без зависимостей от Boost (потому что я не могу включить Boost в проект по слишком многим причинам).


person Robert Gould    schedule 08.04.2009    source источник


Ответы (4)


Нет, я так не думаю. ASIO использует Boost столько, сколько я о нем слышал. Я думаю, что они очень взаимосвязаны. Но вас может заинтересовать инструмент bcp, который позволяет вам извлечь минимальное подмножество повышения, необходимое для библиотек, которые вы хотите использовать.

person Benoît    schedule 08.04.2009
comment
Не знал, что такой инструмент существует, просто потрясающе, я бы утроил этот ответ, если бы мог :) - person Robert Gould; 08.04.2009
comment
Идея asio заключалась в том, чтобы всегда быть доступным в независимой форме от boost. И это. Google для «think asio» или блог авторов. - person rama-jka toti; 13.04.2009
comment
Или вы можете использовать определения boost NO_LIBS для исключения библиотек, отличных от заголовков. Я использую asio только для заголовков с повышением только для заголовков. На что жаловаться? Ничего лишнего для компиляции. - person unixman83; 22.04.2012

Также есть небуст-версия Asio:

Asio поставляется в двух вариантах: (не Boost) Asio и Boost.Asio.

Видеть:

http://think-async.com/Asio/

person Jens Luedicke    schedule 08.04.2009
comment
Но для этого по-прежнему требуется тонна заголовков Boost, хотя это и не часть Boost, меня также одурачило название. - person Robert Gould; 08.04.2009
comment
Честно говоря, я не вижу, к каким заголовкам вы стремитесь. У него есть свои собственные биты потока. - person rama-jka toti; 13.04.2009
comment
-1 Голосование против. Это неправда, asio по-прежнему требует только заголовочные файлы boost. Причина разделения заключалась в том, что asio уже имеет огромное пространство имен, и добавление boost просто делает его длиннее. Кроме того, asio обновляется по другому графику выпуска, чем boost, и некоторые люди считают, что asio нужно обновлять чаще, чем boost. Наконец, использование ASIO без boost::bind() кажется почти невозможным! - person unixman83; 22.04.2012
comment
Это могло измениться с тех пор, как я в последний раз использовал ASIO. Исторически так сложилось, что ASIO определенно требовал усиления. Теперь я не вижу упоминания об этой зависимости... - person unixman83; 22.04.2012
comment
на самом деле теперь, когда в С++ 11 есть лямбды, boost::bind() не нужен - person deltanine; 08.03.2019

«Не-boost asio» имеет свои собственные биты потока вместо использования boost.thread, но для него по-прежнему требуются boost.date_time, boost.array, boost.utility, boost.bind, boost.shared_ptr...

Не существует версии Asio, которая может работать без каких-либо зависимостей от Boost.

person Community    schedule 15.04.2009
comment
Большая часть TR1 правильная и большинство компиляторов уже поддерживают его. И дату-время я не уверен, была ли возможность запустить из него.. не могу вспомнить. - person rama-jka toti; 23.04.2009
comment
только что вспомнил, что от boost.system нужно избавиться... память подводит меня. - person rama-jka toti; 23.04.2009

Последние версии ASIO могут работать без Boost в автономном режиме. Этот режим, вероятно, был включен поддержкой библиотеки C++11, потому что теперь он может использовать стандартные потоки, фьючерсы и т. д. вместо их реализации Boost. Вы можете просто включить ASIO, как показано ниже, и наслаждаться:

#define ASIO_STANDALONE
#include <asio.hpp>
person Zólyomi István    schedule 22.06.2017