Могу ли я определить, имеет ли указатель интегральный тип через признаки типа?

StackOverflow https://stackoverflow.com/questions/7311480

  •  26-10-2019
  •  | 
  •  

Вопрос

Используя признаки типа, я могу выяснить, является ли тип неотъемлемой частью или указателем (и больше). Можно ли также выяснить, является ли указатель, который проходит указатель, является неотъемлемым типом данных (int, плавать, char), а не объект?

РЕДАКТИРОВАТЬ: В дополнение к Арменс Ответ, если кто -то использует библиотеку Loki вместо усиления, функциональность remove pointer похоже на TypeTraits::PointeeType

Это было полезно?

Решение

boost::is_pointer<T>::value &&
boost::is_integral<boost::remove_pointer<T>::type>::value

Кстати float не является неотъемлемой частью. Вам, наверное, нужно is_arithmetic

Другие советы

template <typename T>
struct IsPointerToInt {
    static const bool value = false;
};

template <>
struct IsPointerToInt<int *> {
    static const bool value = true;
};

// ... other specializations for the types you are interested in ...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top