Subject: Re: [boost] [Config] Support for switching between std:: andboost:: equivalents.
From: Edward Diener (eldiener_at_[hidden])
Date: 2015-06-07 22:07:00


On 6/7/2015 7:17 PM, Niall Douglas wrote:
> On 7 Jun 2015 at 14:16, Edward Diener wrote:
>
>> I see these options realistically for Boost library developers:
>>
>> 1) We can continue to use public interfaces in our libraries that use
>> other Boost libraries as the LCD, even if the C++ standard has a pretty
>> close equivalent. Programmers compiling in C++11 mode, and inevitably
>> there will be more as time goes on, who use the C++ standard library
>> equivalents of Boost libraries, and inevitably there will be more using
>> these equivalents as time goes on, may well be irritated about this
>> situation. But if we view that as their problem and not ours, this is
>> the obvious option.
>>
>> 2) We can design totally separate implementations of the same library,
>> one to be used for C++11 and using C++ standard library equivalents in
>> public interfaces, the other to be used for C++03 and using the
>> equivalent Boost libraries in their public interfaces.
>>
>> 3) We can support our public interfaces with both the C++ standard
>> library equivalent ( in C++11 mode ) and the Boost library equivalent,
>> so as to accomodate end-users.
>>
>> 4) We can use the macro system I have created.
>>
>> Realistically 2) or 3) is an awful amount of work, which I as a
>> developer would not want to do.
>
> 5) We can use APIBind to enable Boost library users to easily inject
> which dependencies a library uses from the outside, where each
> possible configuration of that library gets its own ABI thus ensuring
> that impossible or dangerous combinations fail to link and the
> compiler will refuse to pass ABI incompatible implementations into
> one another.
>
> 6) We can use APIBind to enable a Boost library to be C++ 98
> compatible as part of Boost or be C++ 11 mandatory and no longer
> require any Boost, with an identical source code base for both config
> options. Also with ABI safety.
>
>> [snip]
>> I hate to re-invent the wheel.
>
> APIBind comes at the C++ 11 problem from the outside coming in. Yours
> comes from inside Boost going out. Like your solution, APIBind is
> proven working solution which should be better understood by the
> community soon at the end of July during the AFIO review, and there
> is a C++ Now presentation with 90 minutes on just APIBind, with
> plenty of valuable audience commentary by WG21 members and long time
> Boost community members.

APIBind is not finished AFAICS and I do not even remotely understand the
documentation you currently have for it. If others find it usable to
solve this problem that is fine by me.