РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
719 of 815 menu

Класс is_integral

Класс is_integral из заголовочного файла type_traits позволяет на этапе компиляции определить, является ли переданный в качестве параметра тип целочисленным. В первый параметр шаблона мы передаем проверяемый тип. Класс содержит константное поле value, которое равно true, если тип целочисленный, и false в противном случае. К целочисленным типам относятся bool, char, signed char, unsigned char, wchar_t, char8_t, char16_t, char32_t, short, int, long, long long и их беззнаковые версии.

Синтаксис

std::is_integral<T>::value std::is_integral_v<T>

Пример

Давайте проверим несколько типов на целочисленность:

#include <iostream> #include <type_traits> using namespace std; int main() { cout << boolalpha; cout << is_integral<int>::value << endl; cout << is_integral<double>::value << endl; cout << is_integral<char>::value << endl; cout << is_integral<bool>::value << endl; return 0; }

Результат выполнения кода:

true false true true

Пример

Начиная с C++17 доступна краткая форма записи через суффикс _v:

#include <iostream> #include <type_traits> using namespace std; int main() { cout << boolalpha; cout << is_integral_v<long> << endl; cout << is_integral_v<float> << endl; cout << is_integral_v<unsigned int> << endl; return 0; }

Результат выполнения кода:

true false true

Пример

Давайте применим is_integral_v внутри if constexpr для выбора поведения в зависимости от типа:

#include <iostream> #include <type_traits> using namespace std; template <typename T> void check(T value) { if constexpr (is_integral_v<T>) { cout << "integral: " << value << endl; } else { cout << "not integral" << endl; } } int main() { check(42); check(3.14); return 0; }

Результат выполнения кода:

"integral: 42" "not integral"

Смотрите также

  • класс is_integral_v,
    который является краткой формой записи is_integral
  • класс is_same,
    который проверяет совпадение двух типов
  • класс enable_if,
    который включает шаблон при выполнении условия
  • класс if constexpr,
    который выбирает ветку кода на этапе компиляции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить