
Toon Knapen wrote:
David Abrahams wrote:
Ultimately I think the right answer is to use mpl::integral_c<some_type, some_value>
or
mpl::bool_<some_value>
etc.
everywhere as Paul Mensonides suggested. One reason is that it centralizes the out-of-line static member definitions.
I tried this (in the algorithm/string library where I also tested the enum trick for Pavol Droba) and just replaced in algorithm/string/std/string_traits.hpp following lines
enum { value = false } ; typedef mpl::bool_< value > type ;
with
typedef mpl::bool_< false > value ; typedef mpl::bool_< value > type ;
and this evidently results in a compilation error.
Doesn't surprise me. You can't just replace an integral constant with a type!
I am not very fluent in mpl but AFAICT this seems like a nice solution but not exactly a drop-in replacement for the current situation.
Not if you do that! I must've failed to make the 2nd half of my posting comprehensible. I don't know how to make it more comprehensible other than to say, "please try what I suggested in the 2nd half of my posting". I guess I can also say that bool_< x > has a nested static bool constant ::value equal to x. -- Dave Abrahams Boost Consulting http://www.boost-consulting.com