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? Thanks Paul