[To define concepts for template parameters] generate sets of "primitive operations" with signatures … pattern approach, '*p++=v' is the user's notation for … compile expressions similar to '*p++=v'. … [Another example is] 'bool b = (p != q);' [i.e., it] must support '!=' operation, and the resulting expression must be … [p. 305] We can now define an input iterator … from: 'concept Input_iterator where Equality_comparable && … Var p; const Iter::value_type& v = *p; // … }' … One of the beauties of using use patterns …
Google-1
Google-2
Copyright clearance needed for quotation.