On Fri, Jun 13, 2014 at 1:49 PM, Eric Niebler
On 06/13/2014 09:42 AM, Andrey Semashev wrote:
On Friday 13 June 2014 09:27:04 Eric Niebler wrote:
[snip]
There are a great many goals that this change would address:
* Make the minimum requirements for type traits sensible in C++11 by using std:: facilities where appropriate
* Breaking the dependency of TypeTraits on MPL.[^1]
* Making boost type traits play nicely with code written for C++11 that dispatches to std::true_type or std::false_type
* Make the mpl meta-functions work with std::integral_constants
* Make it possible to define mpl Sequence types without reserving a very generic and common identifier like "tag".
This solution is not radical. It's a matter of grepping the source for "::tag" and replacing with uses of mpl::tag.
I agree this is the best solution. I'd hate to have to know which false_type a template metafunction returns. Also, it goes with the idea of separating multiple member typedefs in specific metafunctions that are considered best practices nowadays. I can volunteer to do this change over this weekend if nobody else volunteers.
Eric
[^1]: TypeTraits has other mpl dependencies like if_ and friends. Those would need to be addressed regardless of this change. <sigh>
Regards, -- Felipe Magno de Almeida