11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

现代 C++ 与 Visual Studio

  • 2014-04-08
  • 本文字数:1270 字

    阅读完需:约 4 分钟

在微软的 Build 大会上,Herb Sutter 就现代 C++( Modern C++ )的当前状态发表了一场演讲。在微软,过去的几年里 C++ 的推广经历了一次复兴,而关注程度的上升,部分是由 Sutter 主导的。

即将发布的**C++**版本

一开场,Sutter 先总结了 ISO C++ 标准目前到了什么地步。2 月份已经完成了关于 C++14 的技术讨论,标准委员会目前正在审阅会议记录,希望今年晚些时候举行表决,使该标准成为正式的 ISO 标准。

C++14 被看作一个小幅修订版本,即将到来的 C++17 标准(仍然在设计和讨论之中)则被看作一个主要版本。微软最新的编译器预览版(CTP)是去年 11 月发布的。Sutter 非常自信,下一个 CTP 版本(发布日期尚未透露)有望包含下列特性:

  • User-defined literals
  • C++14 generalized lambda capture
  • C++14 libs: std:: user-defined literals
  • Inline namespaces

下列特性包含在下一 CTP 版本中的可能性居中(这意味着有可能推迟到更晚的版本中):

  • Universal character names in literals
  • noexcept (incl. conditional)
  • char16_t, char32_t, attributes
  • thread_local
  • unrestricted unions
  • consexpr (except ctors, literal types)
  • constexpr (incl. ctors, literal types)

并行 STL(对 PPL、TBB、Amp、CUDA 和 Thrust 的聚合)近日将发布在 CodePlex 上。Sutter 宣布,微软在过去的两年赞助的 C++ 会议 GoingNative 已经被 CPPCon 取代,该会议计划于今年 9 月 7 日 -12 日举行。

现代 ****C++ 的使用场景

演讲的下一部分,他从版本相关的讨论转到了现代 C++ 在今天的应用开发中的使用场景上。在 Sutter 看来,当存在下列目标或意图时应该使用 C++:

  • 跨平台的可移植性和兼容性
  • 高性能、完全控制
  • 对硬件和操作系统资源完全的访问权限
  • C++ 语言的亮点:默认的值类型、默认的确定性以及默认的连续性

Sutter 指出,现代 C++ 并非 C++98——现代 C++ 更为清晰、更为安全,同时保留了快速、灵活的特性。这并不是说不再支持老式的 C++ 了,在很多情况下,尽管编译器会就代码如何改进给出一些警告和建议,但是老式的代码还能通过编译。

现代 C++ 提供的一个特性就是,使用 make_unique 或 make_shared 替换掉 new,内存管理有所简化(从程序员的角度看)。不需要 delete,自动化的生命周期管理,而且是异常安全的。

另一个领域是,如何针对 move 操作更高效地处理值类型。C++11 添加了 move 语义。基于这种方法,对于一会就要删除的副本,我们可以获得所有权,而不是复制对象。对于遗留代码,简单地利用支持 C++14 的编译器重新编译,即可通过改进的 move 语义提高其速度。

编写更快的代码

连续数组非常重要,但是很多人往往领会不到,如果正在访问很多对象,开发者会非常希望以邻接的地址顺序访问它们。如果非常关注性能,则要使用数组,而不是链表(list)或 arraylist。

继续这一主题,Sutter 提供了基准测试,表明在进行插入和删除操作时,向量(vector)比链表(list)好得多。预分配的链表比普通的链表快,但是两者都比向量慢。

Sutter 的演讲信息量很大,而且他还是一位很有魅力的演讲者。可以访问 Channel9 查看完整的演讲。

查看英文原文: Modern C++ and Visual Studio

2014-04-08 20:402220
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 123.4 次阅读, 收获喜欢 32 次。

关注

评论

发布
暂无评论
发现更多内容

Java培训:封装的含义及实现方式

@零度

JAVA开发 封装

在线脑图思维导图生成工具

入门小站

工具

TcaplusDB君 · 行业新闻汇编(六)

TcaplusDB

上市商业银行推进智慧银行建设,全方位赋能零售业务数字化转型

易观分析

商业银行 智慧银行

前端培训:3 个可能有用JavaScript 类

@零度

JavaScript 前端开发

移动办公时代,政企为何首选私有化的即时通讯平台?

WorkPlus Lite

IAST 最佳实践 | 利用洞态做开源组件的安全治理

火线安全

AMD EPYC服务器芯片将涨价10%~30%

WorkPlus Lite

会声会影如何制作视频影片-影片制作过程三步骤

懒得勤快

SENSORO基于TDengine助力基层政府打造数字化应用标杆

TDengine

数据库 tdengine 开源 物联网

Client-go源码分析之SharedInformer及实战| 社区征文

雪雷

Kubernetes Informer 新春征文

虎符交易所Hoo研究院:Open Sea上大火的NFT项目—Azuki

区块链前沿News

NFT Hoo 虎符交易所 Azuki

一站式交付体验:云效+Kubernetes

阿里云云效

阿里云 Kubernetes 云原生 持续交付 一站式平台

GIF 格式解析之表情包是如何动起来的

CRMEB

大数据培训:Hadoop HDFS 实现原理

@零度

hadoop 大数据开发

你会写java脚本吗?-JShell

蜜糖的代码注释

Java 后端开发 2月月更

程序员必知的8个Java开源IDE工具

编程江湖

ide

Apsara Stack 技术百科 | 可运营的行业云,让云上资源跑起来

阿里云 科技 混合云

PingCode Wiki 权限设计之ACL

阿杰

权限系统 权限控制 acl 权限设计

Kafka消息存储机制

编程江湖

TcaplusDB君 · 行业新闻汇编(五)

TcaplusDB

Worktile 权限设计

阿杰

权限控制 rbac 权限设计

四款你必须知道的前端开发工具

编程江湖

TcaplusDB君 · 行业新闻汇编(三)

TcaplusDB

对话 SphereEx 创始人张亮:开源与商业并行 做时间越久越有价值的事情

SphereEx

Linux系统-Makefile规则介绍、基本使用

DS小龙哥

Linux makefile 2月月更

Linux系统编程-(pthread)线程创建与使用

DS小龙哥

线程 2月月更

这个Dubbo注册中心扩展,有点意思

捉虫大师

dubbo 注册中心

天数智芯携手龙蜥社区,以高性能算力助力开源发展

OpenAnolis小助手

Linux 开源 芯片

动态加载不适合数组类?那如何动态加载一个数组类?

华为云开发者联盟

Java 数组 动态加载 数组类

DevOps进阶(一):DevOps 软件开发工艺解读

No Silver Bullet

DevOps 2月月更

现代C++与Visual Studio_语言 & 开发_Jeff Martin_InfoQ精选文章