◐ Shell
clean mode source ↗

std::is_void — cppreference.com

Материал из cppreference.com

<tbody> </tbody>

template< class T > struct is_void;

(начиная с C++11)

std::is_void является UnaryTypeTrait.

Проверяет, является ли T пустым типом. Предоставляет константу элемент value, которая равна true, если T имеет тип void, const void, volatile void или const volatile void. Иначе value равно false.

Поведение программы, добавляющей специализации для std::is_void или std::is_void_v (начиная с C++17) не определено.

Параметры шаблона

Шаблон вспомогательной переменной

<tbody> </tbody>

template< class T > inline constexpr bool is_void_v = is_void<T>::value;

(начиная с C++17)

Унаследован от std::integral_constant

Константы элементы

true, если T это тип void (возможно, cv-квалифицированный), false иначе
(public static константа-элемент)

Функции-элементы

преобразует объект в bool, возвращает value
(public функция-элемент)
возвращает value
(public функция-элемент)

Типы элементы

Тип Определение
value_type bool
type std::integral_constant<bool, value>

Возможная реализация

template< class T >
struct is_void : std::is_same<void, typename std::remove_cv<T>::type> {};

Пример

#include <type_traits>

void foo();

static_assert
(
    std::is_void_v<void> == true and
    std::is_void_v<const void> == true and
    std::is_void_v<volatile void> == true and
    std::is_void_v<void*> == false and
    std::is_void_v<int> == false and
    std::is_void_v<decltype(foo)> == false and
    std::is_void_v<std::is_void<void>> == false
);

int main() {}

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

(C++11)

проверяет, является ли тип типом массива
(шаблон класса) [править]
проверяет, является ли тип типом указателя
(шаблон класса) [править]

(C++11)

проверяет, является ли тип типом перечисления
(шаблон класса) [править]

(C++11)

проверяет, является ли тип типом объединения
(шаблон класса) [править]

(C++11)

проверяет, является ли тип типом класса не объединения
(шаблон класса) [править]
проверяет, является ли тип типом функции
(шаблон класса) [править]

(C++11)

проверяет, является ли тип объектным типом
(шаблон класса) [править]