При правильных обстоятельствах (например, реализация IComparable<T>
) это именно то, что нужно делать.
Но это может быть определено только в каждом конкретном случае, если посмотреть детали того, почему это рассматривается.
С другой стороны, C ++ допускает «любопытно повторяющийся базовый шаблон»:
template<typename T>
class SomeWrapper<T> : T { ... ]
где универсальный класс наследует свою универсальную оболочку. Это позволяет использовать некоторые расширенные сценарии упаковки, но может быстро запутаться, если будет использоваться за пределами упаковки. К счастью (?) Этот шаблон не разрешен в .NET.