Subject: Re: [boost] C++03 / C++11 compatibility question for compiled libraries
From: Rob Stewart (rstewart_at_[hidden])
Date: 2018-02-14 13:13:20
On February 11, 2018 11:27:00 PM EST, Edward Diener via Boost <boost_at_[hidden]> wrote:
> On 2/11/2018 6:46 PM, degski via Boost wrote:
> > On 11 February 2018 at 17:01, Edward Diener via Boost
> >> wrote:
> >> You are saying then that what you mean by "C++03 is not supported"
> >> is compiling in C++03 mode.
> > No, I mean that if the test suite (of a library) cannot compile with
> > one has to qualify the library as non-C++03 (even if it might on the
> > surface look as if the library (not the test-suite) *does* compile
> > C++03). If I cannot test it, it's not vali(date)d code.
> You are saying that any library which compiles in C++03 mode is not
> supported if uses Boost Test for its testing framework, otherwise it
> is still still supported.
Such a library would be known to compile on 03 mode, but templates would only undergo the first phase checking. If the library is not changed, that would be OK. The moment one makes a change, then there's no certainty of 03 compatibility. Non-template code is safer in this regard, but not completely safe.
If Boost.Test were to have two different backend libraries for 03 and 11 support, the headers adjusted appropriately according to the language, and the right library were linked each time, both languages could be supported.
The problem, as Raffi seems to be discussing, is whether and how to allow those using 11 to continue using boost::function. IOW, should testing in 11 mode require switching to std::function?
-- Rob (Sent from my portable computation device.)