我C++11刚学到类来着,看到网友说17相对11的改变不少,那我要不要等17出来了再学啊?请高人指点!

yyxgs 2016-09-22 09:02:29
C++17新特性

C++17核心库文件


P0001R1 弃用register关键字


P0002R1 bool类型不再支持++运算符


P0012R1 异常成为类型系统的一部分,第五版


P0061R1 支持__has_include


P0134R0 引入非静态成员变量的拷贝构造函数//not sure


P0136R1 重写继承构造器(core issue 1941 et al)


P0160R0 删除一元运算符的预设值//Wording for removing defaults for unary folds



C++17库相关文件



P0004R1 弃用过时的iostreams的别名


P0006R0 采用基于标准库规范的类型特征变量模板


P0092R1 优化


P0007R1 Constant View:一个::as_const 的辅助函数模板


P0156R0 可变的lock_guard (Rev. 3)


P0074R0 使std::owner_less更加灵活


P0013R1 逻辑运算符类型特征 (revision 1)



库基本规范 第二版文件



N4531 替换std::rand,版本三


P0013R1 逻辑运算符类型特征 (revision 1)[C++17投票通过]


这些文件将会应用于N4529草案,然后进行拟议草案技术规范的投票。



并发规范



P0159R0 将会作为并发技术规范发布,届时可能稍作改动。



并行规范 v2



N4505草案和P0155R0的”Task Block R5”负责这项工作。



网络规范



P0112R1草案负责这想工作。



范围规范



P0021R0草案负责这项工作。



核心主题



1274.常见的非终结符表达式和内嵌初始化列表


1391.非推导模板参数到参数类型的转化


1722.lambda函数指针转换函数应该不例外吗?


1847.部分排序时声明一致性


1863.抛出对象的类型应该支持std::current_exception()


1949.”sequenced after”代替”sequenced before”


1975.允许声明异常类型


1981.隐式和显式的上下文转换


1990.decl-specifier-seq造成的歧义


2000.#include之外的头文件名称


2004.常亮表达式中有可变成员的变量


2006.Cv-qualified的void类型


2015.虚函数的odr-use


2016.类型转换函数的描述中可能存在的歧义


2019.存储时间描述中成员引用的省略


2024.依赖类型和未解包的参数包


2026.Zero-initialization和constexpr


2027.指定多个alignas的需求不明


2031.&&的不兼容


2052.模板参数推导vs重载操作符


2075.传递短初始化列表给数组引用参数


2101.对类型和值的依赖的错误说明


2120.数组作为标准布局类的第一个非静态成员变量



库主题



1169.num_get不能和strto*完全兼容


2072.缓冲区容量定义不明确


2101.一些类型转换可能产生非预期的类型


2111.处理异常时可能调用那些已经删除的句柄?


2119.扩展int类型缺少哈希函数


2127.带raw_storage_iterator的Move-construction


2133.重载逗号迭代器


2156.无序容器的reserve(n)保存的是n-1个元素


2218.容器如何使用allocator_traits::construct()不够明确


2219.INVOKE-ing一个带有reference_wrapper的指针作为对象表达式


2224.不活跃对象的状态问题


2234.assert()应该允许在常亮表达式中使用


2244.关于basic_istream::seekg的issue


2250.Library Issue 2207中的Follow-up


2259.17.6.5.5规则中有关成员函数的问题


2273.regex_match的歧义


2336.is_trivially_constructible/is_trivially_assignable结果永远是false


2353.std::next限制过度


2367.pair和tuple无参数时不兼容is_constructible


2380.<cstdlib>应该提供long ::abs(long) 和long long ::abs(long long)吗?


2384.分配器的解除函数需要更好的规范


2385.function::assign分配器参数无意义


2435.reference_wrapper::operator()的标记应该是被删除


2447.分配器和volatile-qualified值类型


2462.std::ios_base::failure 被过度规范


2466.allocator_traits::max_size()默认表现是错误的


2469.map的[]操作符和unordered_map规则错误


2473.basic_filebuf对C文件的兼容


2476.scoped_allocator_adaptor是不可分配的


2477.std::vector::erase()和std::deque::erase()的不一致


2483.throw_with_nested()应该使用is_final


2484.rethrow_if_nested()是不可实现的


2485.常量tuple&&应该重载get()


2486.mem_fn()应该提供向前兼容


2487.bind()不应该是cv-overloaded, 而应该是const-overloaded


2489.mem_fn()应该是noexcept的


2492.明确comp的需求


2495.没有类似异常安全元素的东西



Library Fundamentals TS v2 Issues



2494.[fund.ts.v2] ostream_joiner应该是noexcept的


2500.[fund.ts.v2] fundts.memory.smartptr.shared.obs/6 应该适用于cv-unqualified void


2515.[fund.ts.v2]observer_ptr的确定操作符不能匹配任何简介


2517.[fund.ts.v2] 两个propagate_const assignment 操作符返回不正确的类型


2526.[fund.ts]experimental::function::swap 条件不正确

...全文
452 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyxgs 2016-09-23
  • 打赏
  • 举报
回复
引用 5 楼 u010165006 的回复:
很多公司、很多人还不是继续用支持C++98标准的开发工具来开发,初学者就别操心新标准这些了,你有C语言基础,买本500页左右(中等厚度,适合普通资质学生)的国产清华教材(好入门),略过前面几章的C部分,从类开始,也就两、三百页的内容,重要的是练习和实践,写自己想做的程序。 一个程序,你可以用C++来完成,也可以用C来写,甚至汇编都能写,所以C++11对初学者根本不重要,没有C++11以前,难道那么多软件就不能开发了吗?重要的是脚踏实地,不要眼高手低。美国人能开发世界顶尖的软件,他们的学习资料起点也高,美国学生从小完成一个课后题目就要查阅几本书的资料写厚厚的paper,他们的人均读书量也都高于中国学生,所以他们的参考书籍也都厚得多,拿给中国学生,可能就会无法完成半途而废了。所以重要的是先入门,能写出程序,程序结果正确稳定,这才是最重要的。好比小学生学语文,认字写字写句子和作文,都是先有一年级入门书,不可能一本书就包括从一年级到六年级语文,学到一定阶段不认识的字查字典就可以了,而不必把所有的生僻字全部学完,然后才动手写文章。如果某些生僻字不会,你写的文章可能不是最符合八股规范,用典不是最正确,用词不是最精当,用字不是最减省,但一定能够完成文章的功能,表达出想要的意思。又比如造车,要先把美日的所有最先进技术和标准都学到手才能造车吗?那还有国产车吗?所以,入门书要适合自己,不要字典式的大部头,先入门,一步一个脚印,有兴趣,有信心,比较重要。
非常感谢你写这么长一段话激励我,牢记了!我会继续加油的!
yyxgs 2016-09-23
  • 打赏
  • 举报
回复
引用 8 楼 bravery36 的回复:
看了一下改动,好像也没有哪个特性是没有就做不了事的。而且新的标准也要编译器的支持,我现在的公司还在用vs2010,比标准晚几年才是最稳的做法。
谢谢!
yyxgs 2016-09-23
  • 打赏
  • 举报
回复
引用 7 楼 ri_aje 的回复:
想学随时都能学,自身的勤奋远比 c++ 出到那个版本了重要。
谢谢!
bravery36 2016-09-23
  • 打赏
  • 举报
回复
看了一下改动,好像也没有哪个特性是没有就做不了事的。而且新的标准也要编译器的支持,我现在的公司还在用vs2010,比标准晚几年才是最稳的做法。
ri_aje 2016-09-23
  • 打赏
  • 举报
回复
想学随时都能学,自身的勤奋远比 c++ 出到那个版本了重要。
slmax1 2016-09-23
  • 打赏
  • 举报
回复
继续学下去吧...
ooolinux 2016-09-22
  • 打赏
  • 举报
回复
很多公司、很多人还不是继续用支持C++98标准的开发工具来开发,初学者就别操心新标准这些了,你有C语言基础,买本500页左右(中等厚度,适合普通资质学生)的国产清华教材(好入门),略过前面几章的C部分,从类开始,也就两、三百页的内容,重要的是练习和实践,写自己想做的程序。 一个程序,你可以用C++来完成,也可以用C来写,甚至汇编都能写,所以C++11对初学者根本不重要,没有C++11以前,难道那么多软件就不能开发了吗?重要的是脚踏实地,不要眼高手低。美国人能开发世界顶尖的软件,他们的学习资料起点也高,美国学生从小完成一个课后题目就要查阅几本书的资料写厚厚的paper,他们的人均读书量也都高于中国学生,所以他们的参考书籍也都厚得多,拿给中国学生,可能就会无法完成半途而废了。所以重要的是先入门,能写出程序,程序结果正确稳定,这才是最重要的。好比小学生学语文,认字写字写句子和作文,都是先有一年级入门书,不可能一本书就包括从一年级到六年级语文,学到一定阶段不认识的字查字典就可以了,而不必把所有的生僻字全部学完,然后才动手写文章。如果某些生僻字不会,你写的文章可能不是最符合八股规范,用典不是最正确,用词不是最精当,用字不是最减省,但一定能够完成文章的功能,表达出想要的意思。又比如造车,要先把美日的所有最先进技术和标准都学到手才能造车吗?那还有国产车吗?所以,入门书要适合自己,不要字典式的大部头,先入门,一步一个脚印,有兴趣,有信心,比较重要。
bluewanderer 2016-09-22
  • 打赏
  • 举报
回复
我该不该吐槽C++14早出了... _(:з)∠)_
paschen 版主 2016-09-22
  • 打赏
  • 举报
回复
肯定不用啊
D41D8CD98F 2016-09-22
  • 打赏
  • 举报
回复
4年之后的C++20估计也会增添不少提高易用性的工具,7年之后的C++23改动还会更大(到那时reflection、concepts、module等等的设计和具体细节总该固定下来了)。建议等到7年以后再学
iyomumx 2016-09-22
  • 打赏
  • 举报
回复
C++17 出来后, C++21 也该提上日程了,到时候你要不要等? 再说,没学过 C++11 的新特性,你自己贴的这些条目你能看懂多少?

64,663

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧