
On Sun, 12 Jan 2025, 22:10 Peter Dimov via Boost,
Hi all,
I finally have something workable regarding Boost and C++20 modules. I've described it in detail in this article [1], but here's a rough summary:
I've modularized Boost.Mp11 [2] (as an example of a header-only library) and Boost.Charconv [3] (as an example of a compiled library). ... Other than that, I'd like to get some feedback on this, and whether you
Ruben Perez wrote: think
this proposal is worth the effort.
I looked at the Mp11 patch, and I think I don't quite like this approach.
At present, user code needs to look like this
#ifdef BOOST_USE_MODULES import boost.mp11; import boost.core; import std; #else #include
#include #include #endif and I'm not sure that this is what we want.
Rather, my current thinking is that we want this for user code:
#include
#include #include with boost/mp11/this.hpp being
#ifdef BOOST_USE_MODULES import boost.mp11; #else #include
#endif This would presume that
does something similar, which is in fact one suggested implementation strategy. If not, we'll need
#include
#include #include which is not ideal, but is still better than what we started with.
In the general case (when a header also defines macros), the public header will contain both
import boost.mp11;
and the part that defines the macros, which in Mp11's case is
#include
User code wouldn't need to know that in addition to the import, it also needs to include a separate macro header.
This is an interesting idea. Standard library headers don't do this (although making them do it would be... relieving). I will have a try to your approach next week. Thanks, Ruben.