![]() |
Boost : |
From: Chuanqi Xu (chuanqi.xcq_at_[hidden])
Date: 2025-01-13 02:05:08
> #ifdef BOOST_USE_MODULES
> import boost.mp11;
> import boost.core;
> import std;
> #else
> #include <boost/mp11/this.hpp>
> #include <boost/core/that.hpp>
> #include <standard_header>
> #endif
>
> and I'm not sure that this is what we want.
I feel this may not be too bad from a userâs perspective.
> Rather, my current thinking is that we want this for user code:
> #include <boost/mp11/this.hpp>
> #include <boost/core/that.hpp>
> #include <standard_header>
On the one hand, I feel the readability is not so good. On the other hand, the standard wording may not want this:
> In a module unit, all module-import-declarations and export-declarations exporting module-import-declarations shall appear before all other declarations in the declaration-seq of the translation-unit and of the private-module-fragment (if any).
from https://eel.is/c++draft/module.import#1 <https://eel.is/c++draft/module.import#1 >https://eel.is/c++draft/module.import#1 <https://eel.is/c++draft/module.import#1 >
Thanks,
Chuanqi
------------------------------------------------------------------
From:Peter Dimov via Boost <boost_at_[hidden]>
Send Time:2025 Jan. 13 (Mon.) 05:10
To:boost<boost_at_[hidden]>
CC:Peter Dimov<pdimov_at_[hidden]>
Subject:Re: [boost] Interest for C++20 modules support of boost officially
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 <boost/mp11/this.hpp>
#include <boost/core/that.hpp>
#include <standard_header>
#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 <boost/mp11/this.hpp>
#include <boost/core/that.hpp>
#include <standard_header>
with boost/mp11/this.hpp being
#ifdef BOOST_USE_MODULES
import boost.mp11;
#else
#include <boost/mp11/detail/this.hpp>
#endif
This would presume that <standard_header> does something similar,
which is in fact one suggested implementation strategy.
If not, we'll need
#include <boost/mp11/this.hpp>
#include <boost/core/that.hpp>
#include <boost/std/standard_header.hpp>
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 <boost/mp11/version.hpp>
User code wouldn't need to know that in addition to the import,
it also needs to include a separate macro header.
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost <http://lists.boost.org/mailman/listinfo.cgi/boost >
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk