The implementation then only implements the method index< cc >. This has the downside, that the implementation has to use IndexSet::index to provide the first version, if not casted down to the interface.

As far as I know, the purpose of this technique is to ensure the type Entity coinsides with typename GridImp::template Codim< cc >::Entity. Today, this could also be done by an SFINAE: