コンセプトの動機

コンセプトはコンパイルエラーを読みやすくするため、と言ってる人がたまにいますけど
(ぼくのエントリの書き方も悪かったかもしれませんが)

コンセプトの本当の目的は、コンセプトでのオーバーロードと concept_map だと思うんだ


コンセプトでのオーバーロードはたとえばこんなのとかです

template <InputIterator Iterator>
void advance(Iterator& it, Iterator::difference_type n);

template <BidirectionalIterator Iterator>
void advance(Iterator& it, Iterator::difference_type n);

template <RandomAccessIterator Iterator>
void advance(Iterator& it, Iterator::difference_type n);

コンセプトでのオーバーロードがなかった今までは、同じことをするために
タグティスパッチとか、SFINAEとか、Type Traits(enable_if含む)とかを使っていました。

こういった知る人ぞ知るテクニックを駆使してなんとかできていたことが、コンセプトではより簡単になるのだと思います。