We present a programming technique for implementing type safe covariance in C++. In a sense, we implement most of Bruce’s matching approach to the covariance dilemma in C++. The appeal in our approach is that it relies on existing mechanisms, specifically templates, and does not require any modification to the existing language. The practical value of the technique was demonstrated in its successful incorporation in a large software body. We identify the ingredients of a programming language required for applying the technique, and discuss extensions to other languages. Categories and Subject Descriptors D.3.3 [Software]: Programming Languages—Language Constructs and Features Keywords C++, covariance, type safety, templates