C++标准模板(STL)- 类型支持 (特性上的运算,逻辑非元函数,std::negation)

类型特性

类型特性定义一个编译时基于模板的结构,以查询或修改类型的属性。

试图特化定义于 头文件的模板导致未定义行为,除了 std::common_type 可依照其所描述特化。

定义于头文件的模板可以用不完整类型实例化,除非另外有指定,尽管通常禁止以不完整类型实例化标准库模板。
 

特性上的运算

逻辑非元函数

std::negation

template
struct negation;

(1) (C++17 起)

构建类型特性 B 的逻辑否定。

类型 std::negation 是基特征 (BaseCharacteristic) 为 std::bool_constant一元类型特征 (UnaryTypeTrait) 。

模板形参

B - 使得表达式 bool(B::value) 为合法常量表达式的任何类型

辅助变量模板

template
inline constexpr bool negation_v = negation::value;

(C++17 起)

 可能的实现

template
struct negation : std::bool_constant { };

继承自 std::integral_constant

成员常量

value

[静态]

B 拥有在隐式转换为 bool 时等于 false 的 ::value 则为 true ,否则为 false
(公开静态成员常量)

成员函数

operator bool

转换对象为 bool ,返回 value
(公开成员函数)

operator()

(C++14)

返回 value
(公开成员函数)

成员类型

类型 定义
value_type bool
type std::integral_constant

调用示例

#include 
#include 

namespace std
{

template 
using bool_constant = integral_constant;

template
struct negation : std::bool_constant < !bool(B::value) > { };
}

int main()
{
    std::cout << std::boolalpha;
    std::cout << "std::negation>::value:       "
              << std::negation>::value << std::endl;
    std::cout << "std::negation>::value:      "
              << std::negation>::value << std::endl;

    return 0;
}

输出

std::negation>::value:       false
std::negation>::value:      true

你可能感兴趣的:(C++标准库模板(STL)-,类型支持,c++,标准库模板,运行时类型识别,特性上的运算,逻辑非元函数,negation)