当前位置:首页 > 机动车 >

concept用法(concept知识点)

来源:原点资讯(www.yd166.com)时间:2023-05-11 21:16:17作者:YD166手机阅读>>

concept输入模板参数,输出一个bool类型字面量。

例如:

auto is_int = std::integral<int>; std::cout << "The type of std::integral<int> : " << type_to_string<decltype(std::integral<int>)>() << std::endl; std::cout << "The value type of std::integral<int> : " << type_to_string<decltype((std::integral<int>))>() << std::endl;

输出:

The type of std::integral<int> : bool The value type of std::integral<int> : bool

concept最后输出的结果的值类型是个纯右值,也就是个字面量。我们可以将concept的结果当成字面量使用,也可以用字面量替代concept的结果,在requires中使用。

concept结果当字面量用

例如,输入输出:

auto is_int = std::integral<int>; std::cout << std::boolalpha; std::cout << "is_int : " << is_int << std::endl;

输出:

is_int : true 字面量当concept用

template<typename T> requires true void g(T a) { std::cout << a << std::endl; } int main() { g(10); }

输出:

10requires

requires分两种,一种是在template下面的,用来判断concept是否满足的,例如下面的例子:

template<typename T> requires std::integral<T> void g(T a) { std::cout << a << std::endl; }

一种是带表达式的,和一个函数形式类似,例如:

template<typename T> concept can_exec = requires(T a) { a; }; int main() { std::cout << std::boolalpha; std::cout << can_exec<int> << std::endl; std::cout << can_exec<float> << std::endl; }

输出:

true false

其中:

requires(T a) { a; };

并不实际求值,只是判断{}内的表达式能否运行。再看个例子:

template<typename T> concept can_exec1 = requires(T a) { false; }; int main() { std::cout << std::boolalpha; std::cout << can_exec1<int> << std::endl; std::cout << can_exec1<float> << std::endl; }

输出:

true true

所以,对于requires(...){}来说,只要{}中的表达式能运行,就会返回真。

int main() { auto can_exec2 = requires(int a, int b){ a b; }; std::cout << std::boolalpha; std::cout << can_exec2 << std::endl; }

输出:

true

requires(...){}主要用来判断表达式能否运行,返回一个bool字面量

当然,也可以直接在template中运用

template<typename T> requires requires{ false; } void g1(T a) { std::cout << a << std::endl; } g1(10)

输出:

10

requires表达式中还可以再嵌套第一种requires

如果直接使用,会报错:

// int main() { // auto can_exec2 = requires std::integral<int>; // std::cout << std::boolalpha; // std::cout << can_exec2 << std::endl; // } // error: expected '{' before 'std' int main() { auto can_exec2 =requires{ requires std::integral<int>; }; std::cout << std::boolalpha; std::cout << can_exec2 << std::endl; }

输出:

true

还可以这样用

int main() { float a = 2.2; int b = 3; auto f = [&]<typename T>(T a) { auto can_exec2 = requires(T value) { requires std::integral<T>; }; return can_exec2; }; std::cout << std::boolalpha; std::cout << f(a) << std::endl; std::cout << f(b) << std::endl; }

这样用:

template <typename T> requires requires { requires std::integral<int>; } void g1(T a) { std::cout << a << std::endl; }

用来约束lambda表达式

auto f = [&]<typename T>requires std::integral<T>(T a) { };

栏目热文

许广高速好不好走(走许广高速还是乐广高速)

许广高速好不好走(走许广高速还是乐广高速)

2月4号,湖南许广高速发生重大交通事故。截止目前为止,已经造成16人死亡,66受伤。本来是元宵节热闹喜庆的日子,没想到却...

2023-05-11 21:27:07查看全文 >>

二广高速和许广高速(二广高速和许广高速连接线通车)

二广高速和许广高速(二广高速和许广高速连接线通车)

每逢假期我们总有堵在路上的血泪史,老司机们肯定会有惧怕的拥堵路段,也肯定有丰富的避堵经验。让我先来说说我堵在高速路上的血...

2023-05-11 21:19:14查看全文 >>

二广高速和许广哪个好(许广高速和二广高速走哪边好一点)

二广高速和许广哪个好(许广高速和二广高速走哪边好一点)

每到春节和十一的时候,开车回家的人特别多,所以就造成了高速拥堵,是什么原因导致的呢,请听作者分析。 作者每次春节回家需要...

2023-05-11 21:32:57查看全文 >>

许广高速全程几车道(许广高速三条车道速度分三种吗)

许广高速全程几车道(许广高速三条车道速度分三种吗)

一场惨痛的大车祸,十几个家庭支离破碎,几十上百个家庭受到影响,让人痛惜!作为车友,很多人在吐槽原因,高速团雾是导致车祸的...

2023-05-11 21:50:49查看全文 >>

为什么叫许广高速(二广高速起点和终点)

为什么叫许广高速(二广高速起点和终点)

许广高速起点是许昌市,终点在广东省广州市。符待高速耶许虽面广州高速公路,为中国国家高速公路擦首都放射主于线北京一港澳...

2023-05-11 21:49:16查看全文 >>

concept词根词缀(词根词缀速记3000单词软件)

concept词根词缀(词根词缀速记3000单词软件)

80后的英语第一课,我记得是从小学5年级开始的。hi,how are you~fine,thanks and you?I...

2023-05-11 21:47:48查看全文 >>

concept是什么牌子(concept哪个牌子好)

concept是什么牌子(concept哪个牌子好)

除了安全以外,沃尔沃汽车还有健康、环保这两个明显的标签。在可持续发展这条道路上,沃尔沃一直是行业的引领者,目前已实现全车...

2023-05-11 21:28:35查看全文 >>

concept怎么记忆(Concept怎么记)

concept怎么记忆(Concept怎么记)

词根词缀法我觉得是背单词的方法中最实用而且!能够真正做到一个词根记忆多个单词的方法了呢!下面是文字版整理,不喜欢看图片的...

2023-05-11 21:34:54查看全文 >>

concept意思中文

concept意思中文

嘉宾 | 沈国威、方维规、孙江、黄兴涛、陈肖寒记者 | 徐悦东概念史研究到底是什么?概念史研究跟词语史研究、观念史研究和...

2023-05-11 21:08:28查看全文 >>

本田concept参数(本田conceptd参数)

本田concept参数(本田conceptd参数)

本田商务车7座的车。作为一款全新中高端MPV,Concept M概念车是Honda主要为中国市场研发的具有新价值的MPV...

2023-05-11 21:37:43查看全文 >>

文档排行