Ruben Perez wrote:
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 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.