テンプレート化されたクラスがあります
template <typename T>
class MyContainerClass
Tの代わりに使用する型については、get_id()、int data()などの多くの要件を満たす必要があります。
明らかに、基本的なタイプ(POD)のいずれも代替可能ではありません。これを提供できる1つの方法は、これらの関数を提供するPODのラッパーを使用することです。これは許容できる方法ですか?
別の方法は、テンプレートを次のように変更することです。
template < typename T, typename C=traits<T> >
class MyContainerClass
MyContainerClass内で、Tオブジェクトのdata()の代わりにtraits :: data()を呼び出します。専門にしますtraits<int>, traits<const char *>
など。
これは良いデザインですか?このようなトレイトクラスを設計するにはどうすればよいですか(完全に静的なメソッドまたは継承を許可します)?または、ラッパークラスは良い解決策ですか?
他にどのような選択肢がありますか?