On 2/11/2020 4:56 AM, Paul A Bristow via Boost wrote:
https://boostorg.github.io/build/manual/develop/index.html#bbv2.overview.bui... s.features
says
5.3. Builtin features
cxxstd Allowed values: 98, 03, 0x, 11, 1y, 14, 1z, 17, 2a, latest.
cxxstd-dialect Allowed values: iso, gnu, ms.
So these work as expected
toolset=gcc cxxstd=2a cxxstd-dialect=gnu is OK toolset=gcc-9.2.0 cxxstd=2a cxxstd-dialect=gnu is OK too
But if I do NOT specify the cxxstd version - just
toolset=gcc cxxstd-dialect=gnu
for example:
boost\libs\multiprecision\example>b2 float128_snips toolset=gcc-8.1.0 cxxstd-dialect=gnu address-model=64 release > .mp_float128_snips_gcc810_14_gnu.log
Iboost/tools/build/src/build\feature.jam:1020: in feature.compress-subproperties from module feature error: assertion failure: [ set.equal "<cxxstd-dialect>gnu" "toolset-gcc:version8.1.0" : "toolset-gcc:version8.1.0" ] error: Expected: [ "true" ] error: Got: [ ]
which had be puzzled for a while.
Probably the even more common case of only having one compiler, say gcc, installed, and so not specifying toolset at all, confusingly behaves the same way?
This is a perfectly reasonable behaviour, but this requirement might helpfully be documented.
Or this more subtle than I understand?
"dialect" is a sub-feature of "cxxstd" in the same way that "version" is a sub-feature of "toolset". If you specify a sub-feature the feature to which it applies must always be specified somewhere.