Boost C++ Libraries: Ticket #6925: BooleanMetafunction https://svn.boost.org/trac10/ticket/6925 <p> mpl defined the metafunctions max&lt;N1, N2&gt; as: </p> <p> N1, N2 any type. with semantics equivalent to: </p> <p> typedef if_&lt; less&lt;x,y&gt;,y,x &gt;::type r; </p> <p> BUT less&lt;x,y&gt; requires that x &amp; y be a <a class="missing wiki">NumericalMetafunction</a> wity x, y modeling <a class="missing wiki">IntegralConstant</a>. </p> <p> So, I believe that N1 and N2 should also be required to model <a class="missing wiki">IntegralConstant</a>. </p> <p> In addition, it makes sense the max (and min) model the concept of <a class="missing wiki">NumericalMetafunction</a> with value type bool. </p> <p> Actually, there should be a concept <a class="missing wiki">BooleanMetafunction</a> as short hand for <a class="missing wiki">NumericalMetafunction</a>. </p> <p> I came across this problem when I removed the ::type from min&lt;x, y&gt; and got a compile error. This should work as plus, ... etc do. </p> <p> Robert Ramey </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/6925 Trac 1.4.3