У меня есть функция, чтобы определить, является ли тип шаблона указателем.
template<class T>
struct is_pointer_struct { static const bool value = false; };
template<class T>
struct is_pointer_struct<T*> { static const bool value = true; };
template<class T>
bool is_pointer(T &var) {
return is_pointer_struct<T>::value;
}
И у меня есть функция инициализации.
template<class T>
void initialize(T &val) {
if (is_pointer(val))
val = NULL;
else
val = T();
}
Очевидно, что если T
- string
, этот код не может быть скомпилирован. Есть ли способ, который компилирует val = NULL
, когда T
является типом указателя и компилируется val = T()
, когда T
не является типом указателя?