I'm not that into c++ but I thought better error messages was one of the main if not the main point of concepts.
Basically the problem with templates is that there is no check for whether a thing can be satisfy a function/operation till it's fully expanded and it's hard to figure out where the "error" occurred during the template expansion. I thought concepts were meant to be like type classes (and type class limits to generics) in other languages so that the template writer could say that a template parameter has to implement x,y,and z and if the type passed in doesn't put the error at that expansion.
An optional constraint on a feature(templates) otherwise too powerful for good error messages.