C++
文章平均质量分 88
JohnnyMartin
这个作者很懒,什么都没留下…
展开
-
C++20四大特性之四:Range特性详解
1,Range是什么?位列四大,有这么重要么?原创 2023-05-14 13:31:55 · 1780 阅读 · 0 评论 -
C++20四大之三:concept特性详解
前言:C++模板的演进模板的演进是C++发展史中一条十分重要的线,个人觉得Concept是这条线中最大的一个特性了。在介绍Concept之前,我们先捋一捋模板这条线的发展。据Stroustrup先生回忆, 对模板的设想早在1982年便有了,正式提出是在1998年的 USENIX C++ conference会议上提出,设计模板的初衷是因为当时的C++缺少一个标准库,而当时没有模板的C++很难设计出“vector、list”这种适用于多种类型的容器。到1998年模板正式进入标准,在这之前C++模板已经原创 2022-04-05 17:10:05 · 4113 阅读 · 2 评论 -
C++20四大之二:coroutines特性详解
协程与线程1,有栈式协程与无栈式协程原创 2021-10-19 21:10:26 · 4265 阅读 · 3 评论 -
C++20四大之一:module特性详解
写在最开始:C++20最大的特性是什么?最大的特性是迄今为止没有哪一款编译器完全实现了所有特性1,module1,头文件的由来2,实现一个最简单的module3,接口与实现分离module接口文件(后缀名)、module实现文件4,可见性控制5,子模块(submodule)6,模块拆分(module partition)2,concept带约束的T函数模板缩写https://devblogs.microsoft.com/cppblog/abbreviated-function-t原创 2021-07-10 19:30:53 · 2181 阅读 · 5 评论 -
将成员函数转成全局函数
我们在开发中肯定遇到过将一个成员函数经过bind,变成一个std::function,可以用来做回调等等,std::function只能在C++中使用,假如我们想将成员函数绑定到一个全局函数的,暴露其函数指针,则C以及其他好多语言,也可以受惠了。思路是使用模板,结合bind,为每一个绑定生成一个模板类,暴露类中的static函数。代码如下:template<uint64_t id, class R, class C, class... Params, class Ptr, class Args&g原创 2020-08-30 13:42:36 · 742 阅读 · 0 评论 -
C++14与C++17新特性,你想知道的都在这
这篇博文躺在草稿箱里好久了,今天有点时间,整理下发出来------------------------------------------C++14篇------------------------------------------相对于C++11,C++14的改动可谓非常mini了,主要的改动一句话便是:扩大自动类型推断的应用范围。剩下的都是边边角角的小改动这包括:函数返回值自动推...原创 2019-12-25 14:59:13 · 4830 阅读 · 2 评论 -
C++11新特性集锦——新标准库
1,新增的关键字autodecltypeconstexp=defaultoverridenoexceptfinal2,新增的标准库moveforwardbindtuppleshared_prtunique_ptrweak_ptrinitializer_list3,新的语义统一的初始化列表初始化返回值lambda表达式sizeof…委托构造函数范围for...原创 2019-12-19 14:56:56 · 308 阅读 · 0 评论 -
C++11新特性集锦——新语意
本文是C++11新特性系列的第二篇们主要记录C++11的新语意。2,新的语义2.1 大括号{}与初始化C++11之前,有这么几种初始化的方式默认初始化: A a; //调用默认构造函数值初始化:A a=1; //调用单参构造函数直接初始化: A a(1);//调用单参构造函数拷贝初始化: A a2(a1); A a2 = a1;//调用拷贝构造函数C++11之后,增加列表...原创 2019-05-15 00:15:48 · 263 阅读 · 0 评论 -
C++11新特性集锦——新关键字
C++11新引入的特性比较多,这里简单记录下每个特性的大致情况,无法将细节一一描述清楚——那样每个特性几乎都要花费一篇博客的篇幅来记录。本文从新增的关键字 、 新增的语义 、新增的标准库三个方面来记录这些新特性。原本打算将这三部分放到一篇博客中,后来发现太长了,还是分开吧。0,重点特性概览个人觉得,auto、统一的初始化(使用“{}”)、右值引用、lambda是C++11里面重量级的四个特性了...原创 2019-05-14 15:02:55 · 613 阅读 · 0 评论 -
std::move与std::forward代码分析
我们看下C++模板的类型推导(Type Decuction)过程中的部分规则:T&amp; &amp; =&gt; T&amp;T&amp;&amp; &amp; =&gt; T&amp;T&amp; &amp;&amp; =&gt; T&amp;T原创 2019-04-11 15:17:25 · 1260 阅读 · 0 评论 -
C++11:右值引用、移动语意与完美转发
在C++11之前左值:拥有可辨识的内存地址的标示符便是一个左值。右值:非左值。左值引用:左值标示符的一个别名右值引用:右值标示符的一个别名举例:int a = 5; //a为左值,5为右值int* pA = &amp;amp;amp;amp;amp;amp;amp;amp;a; //pA为左值,&amp;amp;amp;amp;amp;amp;amp;amp;a为右值int&amp;amp;amp;amp;amp;a原创 2018-11-04 18:21:56 · 578 阅读 · 0 评论