|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
系统做了些什么,这需要时间去掌握,(背命令不是一件好的学习方法,相信我你一定会在你背完之前全部忘光),尽量掌握常用命令;
这是我对以后在厄巴纳举办的C++委员会集会上的提案方面文章的第三部分。此次是全体关于子组厘革的,对这方面,我写了良多文章,以是这仅仅是第一部分。后面那些部分是关于并发(concurrency)的,然后第二部分是关于中心,收集,模子和不决义举动方面的。
厘革
N4126-显式默许对照操纵符
这个发起已在上一部分的反射部分提到了,在那边我们用反射和std::tie办理这个成绩。这份发起想让=default变得正当;关于一切的操纵符(>,<,==,!=,...)。这些操纵符仍旧利用友元办法来完成,以下例所示:- classThing{inta,b;public://...friendbooloperator<(constThing&,constThing&)=default;friendbooloperator>(constThing&,constThing&)=default;friendbooloperator<=(constThing&,constThing&)=default;friendbooloperator>=(constThing&,constThing&)=default;};
复制代码 N4127-反省后的解援用前提
由于已发起过有局限的for(ranged-for)轮回,这个发起转移到auto和默许范例.假如没有供应范例,它也但愿,在别的语句中,引进或接纳有局限的for的语法,使之正当,比方if语句:- std::weak_ptr<foo>wp;if(x:wp.lock())
复制代码 关于C++来讲,这是一个伟大的改动,而且不是每一个人都喜好它,出格地,编译器的创立者不能不处置这所涉及的局限.但是,假如委员会承认了下个版本的有局限的for轮回,那末在其他C++把持布局,如if,while,for等,中同意一样的语法也就说得通了.
N4131-显式的毫不应当是隐式的
这篇文章对应的是N4074,它争辩发起的变更内容,即让{expr}显式的前往是毛病的,由于显式的决不该该是隐式的.关于草案中的更多细节,作者乃至给出了一个例子,说N4074提案大概招致不决义的举动.
N4135-运转时按划定校验的言语撑持(订正8)
作者供应了很好的概述:假如充足细心,我们能够创立实质上无缺点的库.可是即使是最好的库,只需利用不妥,都大概发生劫难性的的成果.运转时按划定校验的实践使用:当函数挪用时,检测前缀前提的历程,有助于在初期测试中,发明误用的情形.同时也有助于提拔开辟速率,加强软件强健性.将按划定校验拓展为开辟阶段而不单单是初期测试阶段,将带来更多久远的好处. N4147-内联变量,或封装表达式
作者再一次供应了很好的概述:内联函数为对外没法表露工具的接口,供应了符合的举动.只管是不天然的样版,一般仍是会勉励用户利用它们来包装全局变量.别的的变通办法包含类的静态数据成员,列举,宏和变量模板,一切这些都有奇异的语法或缺点,限定了合用性.这个发起在变量界说下面指定了inline标识符,这意味着在语义上相似于内联函数的评价和链接.更通用的,这为定名值或非延续性变量供应了一种工具,它能够替换或增补林林总总的变通办法. N4148-不同意来自易拷贝范例的不成会见操纵符
以后关于易拷贝范例(triviallycopyabletype)的界说有一个缺点:它关于不成会见的/删除的拷贝/挪动机关函数和赋值操纵符一样无效.一个易拷贝工具也能够经由过程利用std::memcpy来拷贝,出格是当有一个易拷贝工具数组的时分,这在功能上更优.但是,关于一个删除的/不成会见的拷贝/挪动机关函数大概赋值操纵符,如许做是不明智的.作者发起更新尺度内里的说话,并进步特征,让std::is_trivially_copyable针对不成会见的/删除的拷贝/挪动机关函数和操纵符前往毛病.
N4149-明白且符合的类
一样的,这篇文章也有很好的概述:一些类只在某些高低文中事情:感化域保卫(scopeguard)作为子表达式一般是没有效处的,表达式模板占位符作为部分变量也会呈现成绩.一个没有利用的函数的了局大概意味着挪用者会利用分歧的协定,如std::async.这个发起拓展了类的声明来制止这类毛病,并增添了经由过程范例交换主动办理它们的手艺,比方一个表达式模板的值范例.别的,不成挪动的工具的天生变得加倍简单处置.
增添的功效包含"主动评价"发起内里提到的.这个发起更具体现力,能够更普遍的使用,而且易于承受和利用. N4150-别号汇合属性:针对C++中restrict一样的别号语义
这个发起想增添restrict润色符到C++,由于它已存在于C99当中,同时,一些编译器已供应了restrict作为一个C++拓展。因为今朝没有界说restrict润色符,作者追求界说怎样准确的利用它,出格是在C++11中像lambda一样的特征。
N4152-未捕捉的非常
这篇文章想进步std::uncaught_exception的可用性:函数intstd::uncaught_exceptions()前往了非常工具的数量,这些工具已初始化,并被抛出大概被从头抛出,可是没有激活任那边理程序. N4154-操纵符断言
这个发起想让assert(断言)成为言语布局,而不是一个宏界说:assert宏界说从未体现得像一个真实的函数,在能够预感的将来,它将更像是一个操纵符.在C中宏界说的体现体例,制止了临盆形式下的优化,可是在调试形式下却同意发生恣意的反作用.增添assert作为一个关头字和内置的操纵符将发生好处,而不会存在任何反作用. N4160-值束缚
这篇文章剖析了怎样在C++中撑持左券式编程(contractprogramming)作风的特征.它实验着供应一个概略,关于怎样在编译时而不是运转时反省的时分撑持左券.作者界说了文档的局限,以下:鉴于[N1962]是一篇关于在C++当中增添左券式编程撑持的相称完全的发起,这个文档供应的是成绩局限,而不是一个特定的发起.我们会合于确认希冀值,潜伏的完成坚苦和价值.
我们晓得的别的左券式编程发起—[N4075],[N4110]—创建在一个假定之上.即前置前提的撑持,必需以供应某种情势之下:在函数挪用之前评价前置前提,偶然作废前置前提的评价和安装未实行左券的处置程序.在这篇文章中,我们不会想固然的做这类假定.运转时撑持只是我们剖析局限的一个子集.我们更仔细的探究了一个可选计划:会合于静态剖析. N4164-前向援用
作为正式的通用援用,范例T&&老是右值(r-value)援用,除作为模板参数大概利用了auto关头字。手艺上仍旧是右值援用,可是在这类情形下,体现上长短常分歧。到今朝为止,尺度不辨认这点,作者想先容这个术语前向援用(forwardingreference),关于在模板和auto关头字当中的右值援用。
N4165-一致挪用语法
成员函数的挪用语法是x.f()大概x->f(),而非成员函数则是f(x).这在泛型编程代码中会是一个成绩,由于没有一致的挪用语法,而泛型编程代码必需决意是挪用成员函数仍是非成员函数。
为懂得决这个成绩,作者发起同意利用语法x./->f()来挪用自在函数,假如函数的第一个参数是x的指针大概援用。这也很好的满意C的用法,当函数第一个指针参数是一个布局体的时分。作者利用FILE*和fseek作为例子。
N4166-可挪动的初始化列表
以后,std::initializer_list不是可挪动的,它是在挪动语义变得主要之前计划的.同时,谁人时分只供应拷贝语义看起来是充足的,可是明天的情形已产生了变更.作者发起一个模板化版本的std::intializer_list,它承继于非右值intializer_list范例:- template<typenameT>structinitializer_list<T&&>:initializer_list<T>{
复制代码 这个机关完成了一切权和挪动语义.
N4172-定名参数
定名参数的语法看起来和发起中的"有局限的for(ranged-for)轮回"相似。可是在近似(几近一样)的语法表达上面,二者有分歧的意义。在一个函数挪用过程当中,你能够像上面例子中如许对定名参数赋值:- voidfoo(intx,inty,intz);foo(40,z:30,y:20);
复制代码 在这个例子内里的函数挪用过程当中,参数z的值是30,参数x的值是40。别的,横死名参数不克不及放在定名参数以后。
N4173-点操纵符
一样的,这篇文章也有很好的概述:这个发起同意用户界说点操纵符(操纵符.()),如许我们能够供应"智能援用"相似于"智能指针".这个发起的要点在于,假如类Ref界说了操纵符.(),那末默许在Ref工具上的每一个操纵都在操纵符.()的了局之前.不论如何,显式声明为Ref成员函数的操纵,使用到Ref工具上时不必要前置.程序员能够经由过程声明操纵符.()为private,来制止指向一个援用工具的指针"浸透"到更年夜的程序当中. N4174-挪用语法:x.f(y)vs.f(x,y)
这个很像N4165-一致挪用语法.复杂的形貌:基础的倡议是界说x.f(y)和f(x,y)是等价的.别的,为了增添兼容性和模块性,我倡议探究,当查询可挪用成员函数(或函数工具)时,疏忽不成挪用和不成会见的成员函数的大概性,. N4175-体系设定的对照
这份文档普遍的会商了在C++中预设的对照该是甚么模样,和它可以将对照运算符设置为默许值有甚么意义。本文和N4126有很年夜联系关系,同时也与N4239绝对应。
N4176-对照较的思索
Bjarne总结了下关于预设对照的会商:这是一份摘录了体系预设对照草稿的部分会商的择要。它提出了很多发起而且依据一系列尺度做了对照。我将会对关于对照尺度的选择有关的批评特别感乐趣(存心的双关语)。 原文地点:http://meetingcpp.com/index.php/br/items/where-will-evolution-lead-cpp17.html
无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。 |
|