C ++ 17的新特性是什么? [英] What are the new features in C++17?

查看:313
本文介绍了C ++ 17的新特性是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

C ++ 17现在功能齐全,因此不太可能遇到大的更改。已经为C ++ 17提出了数百个提案。



哪些功能在C ++ 17中添加到C ++?



当使用支持C ++ 1z的C ++编译器时,当编译器更新为C ++ 17时,哪些功能将可用?

解决方案

语言特性:



模板和通用代码





Lambda





属性





语法cleanup





清洁剂多返回和流控制




  • 结构化绑定




    • 基本上,第一类 std :: tie 自动

    • 示例:


      • const auto [it,inserted] = map.insert({foo,bar});

      • 创建变量 it 和对中推导出类型 $ c> map :: insert 返回。


    • 使用tuple / pair- std :: array s和相对扁平的结构


  • if(init; condition) switch(init; condition)




    • if(const auto [it,inserted] = map.insert({foo,bar}); insert)

    • if(decl)扩展到 decl 不可转换为bool的情况


  • 泛化基于范围的循环




    • 似乎大多数是支持哨兵,或与开始迭代器类型不同的结束迭代器,这有助于以null结尾的循环等。




Misc





库添加:



数据类型


b $ b

  • std :: variant< Ts ...>



      $ b $ b $ b b $ b

  • std :: optional




    • 可能持有某物

    • 太可用了


  • a href =http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4480.html#any =nofollow> std :: any




    • 持有其中任何一项(可复制)


  • std :: string_view




    • std :: string like reference-to-character-array或substring

    • 不要使用 string const&




调用内容





文件系统TS v1





线程



查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆