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

Переменная is_integral_v

Переменная is_integral_v из заголовочного файла <type_traits> проверяет, является ли переданный шаблонный тип целочисленным. Если тип является целочисленным, переменная содержит true, иначе - false. В первый параметр мы передаем проверяемый тип. Результат доступен на этапе компиляции, поэтому is_integral_v удобно использовать в if constexpr, static_assert и SFINAE-конструкциях.

Синтаксис

template <class T> inline constexpr bool is_integral_v = is_integral<T>::value;

Пример

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

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

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

1 1 0 1

Пример

Давайте используем is_integral_v вместе с if constexpr, чтобы выбрать поведение функции в зависимости от типа:

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

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

"integral: 12345" "not integral: 3.14"

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

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