Przykład Załóżmy, że piszemy klasę inteligentnego wskaźnika i, ze względów efektywnościowych, chcemy dać użytkownikowi możliwość określenia czy w danym przypadku ma zachodzić przeprowadzane testowanie poprawności, czy nie. Jednym z możliwych rozwiązań tego problemu jak dodanie parametru do konstruktora obiektu, który determinuje jak inteligentny wskaźnik ma się zachowywać. Jednak wspomniane względy efektywnościowe przestrzegają nas przed tym, gdyż należałoby przeprowadzać testowanie if w każdym miejscu kodu, co wprowadzałoby dodatkowy narzut nawet wtedy, gdy użytkownik wybrałby wariant bez testowania poprawności.
Standardowa klasa SmartPtr może zostać skrótowo zapisana w ten sposób:
template <class T> class SmartPtr
// ...
Aby wykorzystać wytyczne, do klasy SmartPtr musimy dodać jeszcze jeden parametr szablonu, który będzie ustalał sposób obsługi błędów. Tak więc, od tej pory nasza klasa SmartPtr może wyglądać np. tak:
template <class T, class ErrorHandling> class SmartPtr : public ErrorHandling
// ...