命名空间
变体
操作

std::negation

来自 cppreference.com
< cpp‎ | types
 
 
元编程库
类型特征
类型类别
(C++11)
(C++14)  
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
类型属性
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(直到 C++20*)
(C++11)(在 C++20 中已弃用)
(C++11)
类型特征常量
元函数
negation
(C++17)
支持的操作
关系和属性查询
类型修改
(C++11)(C++11)(C++11)
类型转换
(C++11)(在 C++23 中已弃用)
(C++11)(在 C++23 中已弃用)
(C++11)
(C++11)
(C++17)

(C++11)(直到 C++20*)(C++17)
编译时有理数算术
编译时整数序列
 
定义在头文件 <type_traits>
template< class B >
struct negation;
(自 C++17 起)

形成类型特征 B逻辑否定

类型 std::negation<B> 是一个 UnaryTypeTrait,其基本特征为 std::bool_constant<!bool(B::value)>

如果程序为 std::negationstd::negation_v 添加了专门化,则行为未定义。

内容

[编辑] 模板参数

B - 任何类型,只要表达式 bool(B::value) 是一个有效的常量表达式

[编辑] 辅助变量模板

template< class B >
constexpr bool negation_v = negation<B>::value;
(自 C++17 起)

继承自 std::integral_constant

成员常量

value
[静态]
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)> { };

[编辑] 注释

特性测试 Std 特性
__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() {}

[编辑] 另请参阅

可变参数逻辑与元函数
(类模板) [编辑]
可变参数逻辑或元函数
(类模板) [编辑]
具有指定类型和指定值的编译时常量
(类模板) [编辑]