
Hello Jeff,
Alexander Nasonov wrote:
IIRC, someone asked recently why asio requires -lboost_system at link time.
In my personal opinion, C++ wrappers for OS services should not be header-only. I would prefer asio, process, shmem and the like to be all consistent with boost.filesystem. Opinions?
I think they should, if practical, have an option to be used as header only. Implementations should be put in .ipp files and controlled by a macro like:
BOOST_ALLOW_ALL_HEADER_WITH_SYSTEM_INCLUDES
If you don't add this macro then you have to link the library -- otherwise it's header only. I realize it's a bit more work for the library developers, but that way we can have it both ways. I see this as like having an 'all inclusive' header for a library even though there are more granular headers -- it makes it easy to get started and it actually handles the majority of the cases where people don't care about optimizing 'include performance'.
Although the discussion is slipping away from the original question, I must say I 100% agree with Jeff. The best solution is to give user a choice whether to link or to go header-only (where possible). And in my opinion such solution should be unified for all boost libs. We already have the BOOST_USE_WINDOWS_H macro, why not extend it to something like BOOST_USE_OS_NATIVE_HEADERS? I think this would settle the problem once and for all. The only problem is I'm not sure how such a transition should be organized. -- Best regards, Andrey mailto:andysem@mail.ru