У меня есть шаблонный класс
template <typename T>
class MyContainerClass
Для типов, которые должны быть заменены на T, он должен удовлетворять многим требованиям: например, get_id (), int data () и т. Д.
Очевидно, что ни один из фундаментальных типов (POD) не может быть заменяем.Один из способов, которым я могу обеспечить это, - через обертки для POD, которые предоставляют эти функции.Это приемлемый способ?
Другим способом было бы изменить шаблон на:
template < typename T, typename C=traits<T> >
class MyContainerClass
и внутри MyContainerClass вызывать traits :: data () вместо data () для объектов T.Я буду специализироваться traits<int>, traits<const char *>
и т. Д.
Это хороший дизайн?Как мне спроектировать такой класс признаков (полностью статические методы или учесть наследование)?Или классы-обертки являются хорошим решением?
Какие есть еще альтернативы?