On 06/06/2014 02:40 PM, Peter Dimov wrote:
I'm not sure that this is a conforming mpl::bool_ though. It almost is. But mpl integral constants need to have a nested ::tag (integral_c_tag), and std::integral_constant doesn't have one. Maybe this requirement can be dropped. Maybe it can't. I don't know.
Well, mpl can be fixed to not require ::tag, and in fact it should, IMO. I am in favor of adding an mpl::tag_of metafunction which retrieves the tag type of the passed mpl entity. It can be specialized for std::integral_constant to do the right thing. In addition, it would fix the issues raised here: http://lists.boost.org/Archives/boost/2009/01/147045.php and here: https://svn.boost.org/trac/boost/ticket/7192 I think in the C++11 world, boost type_traits should *all* inherit from std::true_type. That's easily accomplished by aliasing mpl::true_ to std::true_type. It fixes everything. Eric