@ Альберт
У меня была похожая проблема, когда я хотел добавить «отделку-избыточную емкость» в изготовленный на заказ контейнер.Трюк подкачки std :: vector и изменение объявления существующего контейнера не были допустимыми параметрами.Итак, я пришел к следующему:
template <class T, bool isPtr> struct DeleteImp
{
static void Trim(T* to, unsigned int count);
};
template <class T> struct DeleteImp<T, false>
{
static void Trim(T* to, unsigned int count) {}
};
template <class T> struct DeleteImp<T, true>
{
static void Trim(T* to, unsigned int count)
{
for(unsigned int i=0; i<count; i++)
delete to[i];
}
};
, используемому моим контейнером, например:
DeleteImp<T, TypeTraits<T>::isPointer>::Trim(buf + length, truelength-length);
Вы также можете проверить этот ресурс .