第三章–concept库介绍和使用

Aki 发布于 2022-11-30 193 次阅读


C++20 Concepts 概念库_

一些最常见的concept可以在concept库里找到,下面列出我目前所知道的一些concept。

类型方法作用
核心语言概念same_as<T,U>指定一个类型T与另一类型U相同
核心语言概念convertible_to<T,U>指定一个类型T能隐式转换成另一类型U
核心语言概念
integral<T>指定类型T为整型类型
核心语言概念
signed_integral<T>指定类型T为有符号的整型类型
核心语言概念
unsigned_integral<T>指定类型T为无符号的整型类型
核心语言概念
floating_point<T>指定类型为浮点类型
核心语言概念
assignable_from<T,U>指定一个类型T能从另一类型U赋值
核心语言概念
swappable<T>
swappable_with<T,U>
指定一个类型T能进行交换,或两个类型T,U能彼此交换
核心语言概念
destructible<T>
指定能销毁该类型T的对象,也就是能够调用类型T的析构函数。
核心语言概念
default_constructible<T>指定能默认构造一个类型T的对象,也就是T有默认构造函数
核心语言概念
move_constructible<T>指定能移动构造一个类型T的对象,也就是有移动构造函数
核心语言概念
copy_constructible<T>指定能复制构造和移动构造一个类型T的对象,也就是同时有拷贝构造和移动构造函数
比较概念equality_comparable<T>
equality_comparable_with<T,U>
指定类型T能够使用==运算符,或者T与U能够使用运算符==
比较概念boolean<T>指定类型T能用于布尔语境
对象概念movable<T>指定能移动及交换一个类型T的对象
对象概念copyable<T>
equality_comparable_with<T,U>
指定能复制、移动及交换一个类型的对象
对象概念semiregular<T>指定能拷贝赋值、拷贝构造,移动、交换及默认构造一个类型的对象
对象概念regular<T>指定能拷贝赋值、拷贝构造,移动、交换及默认构造一个类型的对象,且还能使用==operator
可调用概念invocable<T>指定能以给定的一组实参类型调用的可调用类型,类型T有仿函数