= Proposal for "Do the Right Thing" Alternative Selection = This page describes a proposal for a change to the way target alternatives are selected. == Motivation == It seems there are a significant number of {{{bjam}}} invocations for which there is a sensible interpretation, but for which Boost.Build currently generates an error instead and refuses to build. === Example 1 === Given the following Jamfile: {{{ lib a : a.cpp : off ; # alternative 1 lib a : a-dbg.cpp : on on ; # alternative 2 }}} In response to {{{ bjam debug-symbols=on }}} the result is {{{ error: No best alternative for ./a next alternative: required properties: off not matched next alternative: required properties: on on not matched }}} My claim is that it would be more appropriate to build the 2nd alternative because it is a better match for the explicit build request. Boost.Build generates an error because the default value of the {{{}}} feature is {{{off}}}. It combines that default value with the explicit build request to get {{{on off}}}, which does not match the 2nd alternative.