Могу ли я определить, имеет ли указатель интегральный тип через признаки типа?
-
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 ...
Не связан с StackOverflow