コンセプトは、階層構造にすることができます。
たとえば、イテレータは階層構造を持っていますが、コンセプトではそれを直接表現することができます。
concept InputIterator<class X> {} concept ForwardIterator<class X> : InputIterator<X> {} concept BidirectionalIterator<class X> : ForwardIterator<X> {} concept RandomAccessIterator<class X> : BidirectionalIterator<X> {}
これは、"コンセプトの継承"と見なすことができます。
Concept Refinementは関連要件(Associated Requirements)と違い、
concept mapに対しても影響を与えます。
Concept Refinementと関連要件(Associated Requirements)は、
継承と包含の関係と同様に"is-a"関係と"has-a"関係を表します。
階層構造が必要な場合にはConcept Refinementを使用します。