I'm trying to promote the simplest view of "type constraints" which can possible work. Your solution does more - at the cost of requiring a lot more effort to understand and use correctly. (there is no documentation about it either). Then there is the fact that it requires a compiler "man enough" (hmmm - why not woman enough?) to use. So I don't think it's a good vehicle for promoting the concept of type constraints.
I don't think Eric's solution requires more to understand than using Boost.ConceptCheck, unless you want to do more such as overloading. Also, my library version of the this does have documentation and has been tested and works on gcc 4.6/4.7/4.8/4.9 and clang 3.4(I do plan to submit a boostified version soon).
I would just like every library invoke a compile time assert whenever in instantiate a template with type arguments which won't work. Boost Concept Check can do this. In fact, maybe BCC is over kill. I seriously considered recommending making concept checking classes with just static_assert. But in the end I opted for recommending BCC.
Yes, of course, static assertions can help improve error messages and its better than nothing, but it is not the same as template constraints. This will become more obvious as more people start using concept predicates. Ideally, if a library is targeting C++11 they could perhaps use concept traits rather than Boost.ConceptCheck. -- View this message in context: http://boost.2283326.n4.nabble.com/Re-GSoC-Boost-Hana-Formal-review-request-... Sent from the Boost - Dev mailing list archive at Nabble.com.