I realize the documentation of the Shape class is not right here and you are basing on that.

Instead use full class spec here:

template <>
class CyclicShape<GenericShape>;