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

Класс conditional

Класс conditional выбирает один из двух типов на этапе компиляции. В первый параметр шаблона мы передаем условие, во второй - тип, который будет выбран, если условие истинно, а в третий - тип, который будет выбран, если условие ложно. Выбранный тип доступен через вложенный псевдоним type.

Синтаксис

std::conditional<condition, type1, type2>::type

Если condition истинно, то type является псевдонимом для type1. Если condition ложно, то type является псевдонимом для type2.

Пример

Давайте выберем тип int, так как условие true истинно:

#include <iostream> #include <type_traits> using namespace std; int main() { using res = conditional<true, int, double>::type; cout << is_same<res, int>::value << endl; return 0; }

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

1

Пример

Давайте выберем тип double, так как условие false ложно:

#include <iostream> #include <type_traits> using namespace std; int main() { using res = conditional<false, int, double>::type; cout << is_same<res, double>::value << endl; return 0; }

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

1

Пример

Давайте используем conditional для выбора типа переменной в зависимости от размера другого типа:

#include <iostream> #include <type_traits> using namespace std; int main() { using res = conditional<(sizeof(int) > 2), long, short>::type; res num = 42; cout << sizeof(num) << endl; return 0; }

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

8

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

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