仓酷云

标题: 来讲讲:C++17 将有甚么厘革? [打印本页]

作者: 小女巫    时间: 2015-1-16 11:05
标题: 来讲讲:C++17 将有甚么厘革?
系统做了些什么,这需要时间去掌握,(背命令不是一件好的学习方法,相信我你一定会在你背完之前全部忘光),尽量掌握常用命令;
  这是我对以后在厄巴纳举办的C++委员会集会上的提案方面文章的第三部分。此次是全体关于子组厘革的,对这方面,我写了良多文章,以是这仅仅是第一部分。后面那些部分是关于并发(concurrency)的,然后第二部分是关于中心,收集,模子和不决义举动方面的。



  厘革
 N4126-显式默许对照操纵符

  这个发起已在上一部分的反射部分提到了,在那边我们用反射和std::tie办理这个成绩。这份发起想让=default变得正当;关于一切的操纵符(>,<,==,!=,...)。这些操纵符仍旧利用友元办法来完成,以下例所示:
  1. 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语句:
  1. 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范例:
  1. template<typenameT>structinitializer_list<T&&>:initializer_list<T>{
复制代码
  这个机关完成了一切权和挪动语义.
 N4172-定名参数

  定名参数的语法看起来和发起中的"有局限的for(ranged-for)轮回"相似。可是在近似(几近一样)的语法表达上面,二者有分歧的意义。在一个函数挪用过程当中,你能够像上面例子中如许对定名参数赋值:
  1. 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命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。
作者: 莫相离    时间: 2015-1-18 07:47
外国专家编写,简直是纯洁的C++的拥护者,通篇都是纯粹的C++,真正贯彻了大师们对很多诸如分清与C界限,不要使用C给C++带来灾难的工具的思想,这个倒不是说C本身有什么问题。
作者: 兰色精灵    时间: 2015-1-23 16:04
经过这周的实训,我收获颇多,从中发现了自己的不足之处,也增长了很多见识。在此,要感谢我们的指导老师邹锋,感谢他一周以来的耐心教导。
作者: 深爱那片海    时间: 2015-1-31 18:53
事必躬行。初学者开始最爱犯得毛病就是看书不动手,尽信书不如无书(我也反对),语言和平台有关,任何平台都不是绝对支持标准。
作者: 活着的死人    时间: 2015-2-6 22:44
一开始你问得问题他一定可以解决,所以这个时候你如坐春风,一日千里;慢慢得你一定可以提出强人解决不了得问题(不管那方面技术),这个时候可以说你已经入门了,把强人解决不了任务解决掉,解决掉你自己一定很有成就感;
作者: 变相怪杰    时间: 2015-2-19 05:50
现在的年轻人,清一色的追求看书看国外教材,当然我也不能低人一个档次,看的都是有名的大师作品,不期自己能够编出惊天地泣鬼神的大作。
作者: 分手快乐    时间: 2015-3-6 13:35
C++有着很多对C语言修改的地方,这些修改犹如美国英语对英国英语的修改一样,使问题变得方便易懂!规范C++程序已经是刻不容缓的事情,既然C++取代C是趋势,就该加快这种步伐。
作者: 冷月葬花魂    时间: 2015-3-13 02:09
如在实验三中,有道实验“编程对一维数组求最大值、最小值、平均值”然而在课本上也有一道类似的,于是我按照书本上的语言编程上去,然后再改下,在运行时居然可以了。顿时,心里有种喜悦的满足感。
作者: 谁可相欹    时间: 2015-3-20 10:19
经过这周的实训,我收获颇多,从中发现了自己的不足之处,也增长了很多见识。在此,要感谢我们的指导老师邹锋,感谢他一周以来的耐心教导。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2