История изменений
Исправление xaizek, (текущая версия) :
Можно выносить специализацию, как-то так можно попробовать:
struct CDestroyer
{
...
template <typename T>
struct CHelper4
{
template <bool a>
static void delete_data(T& data)
{
CHelper2<T>::delete_data<object_type_traits::is_pointer<T>::value>(data);
}
};
template <typename T>
static void delete_data(T& data)
{
CHelper4<T>::delete_data<object_type_traits::is_stl_container<T>::value>(data);
}
};
template <typename T>
template <>
void CDestroyer::CHelper4<T>::delete_data<true>(T& data)
{
CHelper3::delete_data(data);
}
Исходная версия xaizek, :
Можно выносить специализацию, как-то так можно попробовать:
struct CDestroyer
{
...
template <typename T>
struct CHelper4
{
template <bool a>
static void delete_data(T& data)
{
CHelper2<T>::delete_data<object_type_traits::is_pointer<T>::value>(data);
}
};
template <typename T>
static void delete_data(T& data)
{
CHelper4<T>::delete_data<object_type_traits::is_stl_container<T>::value>(data);
}
};
template <typename T>
template <>
static void CDestroyer::CHelper4<T>::delete_data<true>(T& data)
{
CHelper3::delete_data(data);
}