Separation of concerns and collaboration based design is usually a suitable concept for library implementation: it results
in easily scalable and maintainable code. After specifying and implementing orthogonal features, we aim to easily assemble
library components. In real life, components can be used only after appropriate refinement steps, progressively adding features
in each step. Therefore the specific solution for a particular task can be produced by composing a set of refined components.
Unfortunately, a subtype anomaly occurs in object-oriented languages between such composite components that have different
numbers of features from different refinement stages. In this article we analyse this anomaly that we named chevron-shape
inheritance and present a framework based on standard C++ template metaprogramming.