std::negation
Определён в заголовочном файле <type_traits> | ||
|---|---|---|
template< class B > struct negation; | (начиная с C++17) |
Образует логическое отрицание трейта типа B.
Тип std::negation<B> является унарным трейтом типа с базовой характеристикой std::bool_constant<!bool(B::value)>.
Если программа добавляет специализации для std::negation или std::negation_v, поведение не определено.
Параметры шаблона
| B | - | любой тип, для которого выражение bool(B::value) является допустимым константным выражением |
Вспомогательный шаблон переменной
template< class B > constexpr bool negation_v = negation<B>::value; | (начиная с C++17) |
Унаследовано от std::integral_constant
Константы-члены
|
value
[static] |
true, если B имеет член ::value, который при явном преобразовании к bool является false, в противном случае false (общедоступная статическая константа-член) |
Функции-члены
|
operator bool | преобразует объект в bool, возвращает value (общедоступная функция-член) |
|
operator()
(C++14) | возвращает value (общедоступная функция-член) |
Типы-члены
| Тип | Определение |
|---|---|
value_type | bool |
type | std::integral_constant<bool,value> |
Возможная реализация
template<class B>
struct negation : std::bool_constant<!bool(B::value)> { };
|
Примечания
| Макрос проверки поддержки возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_logical_traits | 201510L | (C++17) | Трейты типов для логических операторов |
Пример
#include <type_traits>
static_assert(
std::is_same<
std::bool_constant<false>,
typename std::negation<std::bool_constant<true>>::type>::value,
"");
static_assert(
std::is_same<
std::bool_constant<true>,
typename std::negation<std::bool_constant<false>>::type>::value,
"");
static_assert(std::negation_v<std::bool_constant<true>> == false);
static_assert(std::negation_v<std::bool_constant<false>> == true);
int main() {}
См. также
|
(C++17) | вариативная метафункция логического И (шаблон класса) |
|
(C++17) | вариативная метафункция логического ИЛИ (шаблон класса) |
|
(C++11)(C++17) | константа времени компиляции заданного типа с заданным значением (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/types/negation