この章で説明する traits 手法は、次に挙げるような問題の解決策として使用することができます。 たとえば、あらゆる型の数値に有効でなければならない、 ただしその動作はある程度 number の型に依存する必要があるマトリックスがあるとします。 つまり、このマトリックスはすべての数値を同様に処理できないということです。
動作の相違を除けば、これは純粋にテンプレートの問題のようです。ただし、単一のテンプレートを使用することはできません。一般に数値は組み込み型なので、追加情報を数値の型によって決定することはできないからです。テンプレートは、どの数値型にも同じ動作をすることになっていますが、この例ではそれができません。特殊化することはできますが、すべての型の数値についてマトリックスクラス全体を再実装する必要があります。ほとんどのクラスが同一という場合もあるかもしれません。インタフェースを未知の将来の型で使用するために開放しておく場合は、将来のユーザーにクラス全体の再実装を要求することになります。
ユーザーが本当に望んでいるのは、変化しないものはすべて 1 か所にまとめ、変化する一部だけを型を使用して繰り返し指定するという方法です。この手法は一般に、traits パラメータの使用と呼ばれます。