Boost logo

Boost :

From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2020-09-22 14:35:32

On 9/21/20 8:37 PM, Edward Diener via Boost wrote:
> Since we are reviewing Vinnie Falco's JSON library I thought that this
> would be a good time to present a proposal to add information to each
> Boost library's meta/libraries.json file regarding the level of C++
> standard compliance for that library. This could then be added to each
> library's visual documentation so that end-users would instantly know
> the C++ standard level they would need to use in order to use a Boost
> library.
> My proposal is to add 3 fields whose data would be the same as the
> cxxstd allowed values from Boost Build, using the first value of each
> choice ( currently 03, 11, 14, 17, 20 ).
> standard = minimum C++ level for the library
> extended = same functionality in the library as the minimum C++ level
> but with extended use given higher C++ levels
> required = new functionality in the library above the minimum C++ level
> which requires given higher C++ levels
> The 'standard' field would be a single value, while the 'extended' or
> 'required' fields could be more than one comma separated value. If you
> don't like the names for 'standard', 'extended', or 'required' you can
> bikeshed the name, although I think the 'standard' name is pretty well
> apparent.
> The idea is to provide this information in the meta/libraries.json field
> for each library, so that the end-user of the library can immediately
> know the usability of the library with appropriate C++ standard levels
> of compilation.

One downside of a manual markup is that this information can go out of
sync. Including due to changes in a dependency of a library. Granted,
the status quo also has this downside, so it doesn't make things worse.
But since we're talking about a tag in a JSON document, it would be nice
if the value could be deduced from dependencies.

> I realize that the line between the 'extended' and 'required' entries,
> as I have described them, could be blurred. The 'standard' field remains
> the most important. I have long felt that the end-user should not have
> to do any investigation, in code or in documentation, just to determine
> if a library is usable for his C++ standard level of compilation.

I'm not sure I understand what "extended" and "required" tags mean. I
think the most practical tags are the minimal C++ version at which the
library is minimally useful, and the minimal C++ version at which it is
fully useful (meaning, the user can use all features of the library).

Boost list run by bdawes at, gregod at, cpdaniel at, john at