I am therefore rather sticking with static_assert to enforce constraints with friendly error messages for the time being until Concepts Lite are available as TS or part of the standard.
Using static_assert to enforce constraints can become problematic when used with concept predicates. That is because static_assert causes a hard error. So, when its combined with function overloading, I would get a friendly error message, rather than the compiler calling the alternative function. This can be workaround by specializing the trait, which is possible with Tick, but not with `concept bool`. A lot of these problems will start showing up as more people start using concept predicate in C++11 and beyond. The difference between a hard error and template constraint is not really fully understood or utilized by many libraries. So to be prepared for the future you should use enable_if which is a template constraint, instead of static_assert which just produces an error. Most modern compilers will produce nice friendly messages for enable_if. -- 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.