VisualStudio2013Preview对C++11的支持(转载)

VisualStudio2013Preview对C++11的支持

为期3天的微软Build 2013大会结束了,作为微软一年一度的开发者大会,微软也做足了功夫:很多产品(包括Windows 8.1和Visual Studio 2013 Preview)发布,channel9全程直播,可以到http://channel9.msdn.com/Events/Build/2013这边查看会议的所有内容。

虽然整个Build大会不像Google的I/O和Apple的WWDC那么热闹(Google和Apple的粉丝比较多),但我倒是一直非常期待,其中最大的期待在于Herb Sutter曾近承诺在2013年上半年提供一个更好支持C++11的VS版本。Herb Sutter(Visual C++首席架构师、C++标准委员会主席,可以说是当今C++领域影响最大的人物之一了)在Build大会第三天有个演讲,题目叫做“The Future of C++”,具体介绍了Visual Studio 2013 Preview对C++11的支持。在这个演讲之前,我已经把Visual Studio 2013 Preview安装起来,并尝试了一些在Visual Studio 2012中没有被支持的C++11特性,差不多得出了一个支持列表。

OK,还是看看Herb Sutter给出的官方roadamp吧:

这是我从Herb Sutter的演讲PPT中截的图,注意题目:根据Sutter的介绍,Visual Studio并没有把目标直接定为C++11,而是定位为C++14 wave,所谓C++14 wave,是与C++14(C++11之后的一个minor release,作为C++11的补充,已经于今年早些时候成型,其draft已经获得C++标准委员会通过)相关的一套标准,包括一些新的库。

VC++ 2013 Preview相比于VC++ 2012多出的C++11特性的在第一列,包括委托构造函数统一初始化列表可变模板参数等等,当然还有一些C++14的特性(cbegin和make_unique等等)。

VC++ 2013 Preview还没有支持,但是今年稍微时候的VC++ 2013 RTM版本,会加入非静态数据成员初始化、=default=deleteusing别名的支持,也就是说VC++2013 RTM基本上支持C++11的常用特性,但是并不包括constexpr(Sutter说暂时不支持constexpr的原因在于VC++没有AST树,现在正在添加AST,我感觉很奇怪,之前VC++是怎么完成编译过程的?)和noexcept。

剩下来的C++11特性部分在一个叫做Post-RTM OOB CTP开发版本中完成,还有的特性正在计划中,看来Herb Sutter的想法的确是直接瞄准C++14的,根据VS现在的发布频率,所有的这些特性我感觉在2015左右差不多都有了。

说说自己的看法吧,在对C++11的支持上,Visual C++相比于GCC和Clang来说,当然是落后一大截了,两个开源编译器都已经是feature complete了。但是VC++作为商业产品,当然有自己的考虑。微软对C++有自己的扩充( C++/CLI, C++/CX, C++ AMP),况且C++对于微软来说地位不像C#那么高,整个VC++的团队是比较小的(大家可以到http://channel9.msdn.com/Events/Build/2013/2-306这里看下面的评论),在这种情况下,我个人感觉能做到这样已经是很不容易了。我个人非常佩服Herb Sutter,一个人身兼这么多重要职位,各方面的事情都处理得很好,另外自己还经常写技术博客,很好奇他是怎么利用时间的!

在看整个视频的过程中,有个很深的感受:会场上好像没有太多对技术很感兴趣的开发者,气氛不够浓烈,不像一些专门的C++会议有那么好的气氛,比如Going NativeC++ and BeyondMeeting C++等等。对了,Herb Sutter在PPT最后说了,今年的Going Native将于9月4-6号进行,非常期待这次纯C++会议!

本文由豆约翰博客备份专家远程一键发布

时间: 2024-10-10 23:59:01

VisualStudio2013Preview对C++11的支持(转载)的相关文章

VS2010编译器工具cl对c++11标准支持情况测试

本文探讨了VS2010编译工具cl对C++11标准的支持情况,提供了利用C++11新特性的两段代码来进行测试,并同g++ 4.9.3编译器的编译情况相对比.总的说来:VS2010的编译器工具cl部分支持了C++11标准,而g++ 4.9.3则全部支持C++11标准.虽然现在已出现了C++14等新的标准,但熟悉了C++11标准的支持情况有利于我们正确选用符合自己需要的编译工具. 1. 问题产生 一个月前由于编写算法的而使用C++语言,看了一些英文版的算法设计和分析书.一个偶然的机会发现了C++11

在YouCompleteMe+Syntastic中添加和取消对C++11的支持

添加对c++11的支持: /.vimrc中添加: let g:syntastic_cpp_compiler = 'g++'  "change the compiler to g++ to support c++11. let g:syntastic_cpp_compiler_options = '-std=c++11 -stdlib=libc++' "set the options of g++ to suport c++11..ycm_extra_conf.py中: 将flags数组

jquery.validata1.11怎么支持metadata

使用metadata方式这个需要使用jquery.metadata.js插件才可工作,通过在表单项中定义特殊的属性来指定验证规则 但是我发现最新的jquery.validate 1.11竟然没有内置metadata的支持,故需要对其进行一些改造 搜索jquery.validate.js文件中的$.validator.classRules(element),并在其前加入以下行: $.validator.metadataRules(element), 再搜索 staticRules:, 在其前面加入

Java基础11 对象引用(转载)

对象引用 我们沿用之前定义的Human类,并有一个Test类: public class Test{    public static void main(String[] args){        Human aPerson = new Human(160);    }  class Human{    public Human(int h){        this.height = h;    }    public int getHeight(){        return this

Android NDK的C++11标准支持

C++11在Android NDK中已经支持了,本文主要介绍如何在NDK中添加C++11标准的支持. 在开源项目Cocos2d-x中,已经添加了C++11标准的支持. 1.修改Application.mk文件,添加NDK_TOOLCHAIN_VERSION NDK_TOOLCHAIN_VERSION=4.8 2.添加APP_CPPFLAGS,在命令行编辑时支持C++11 APP_CPPFLAGS := -frtti -std=c++11 然后编写测试函数,在JNI中调用此函数即可. #inclu

jQuery UI 1.10不再支持IE6,jQuery UI 1.11不再支持IE7

jQuery UI 1.10 Upgrade Guide(升级指南)中指出 jQuery UI 1.10 Removed support for IE6 IE6 usage has dropped to a low enough point that jQuery UI no longer finds it necessary to support. As of 1.10.0, some portions of jQuery UI may not work properly in IE6. If

OpenWRT开发之——C++11的支持

前言 在上篇文章中博主尝试了在OpenWrt上用C++写个简单的程序测试了一下,可行. 博主这两天又了解了C++11,里面的新特性非常令我兴奋.比如shared_ptr, lambda, auto都是非常有用的特性.[点击了解C++11] 今天,博言主就尝试了一下. 正文 1. 检查gcc版本 据说,gcc在4.8版本之后就支持c++11了.我们先检查一下交叉编译器的版本. $ cd SDK    #进入OpenWrt的SDK路径 $ cd ./staging_dir/toolchain-mip

VS2010对c++11的支持情况验证

目前仅仅测试工作中 使用的比较多的: 智能指针 shared_ptr #include <memory> std::shared_ptr<A> a(new A); ----支持! 同时也支持 make_shared weak_ptr ----支持,毕竟这是个给shared_ptr打辅助的指针模板 unique_prt ----支持! ,但不支持make_unique,这也正常,毕竟这是C++14的语法了. 综合来看,可以在VS2010里自有的使用智能指针了. auto类型自推导 v

python3使用django1.11不支持MYSQL-python的解决办法

mysql-python不支持Python3,需使用pymysql代替,pip install pymysql后,打开django的源码,cd db/bin/backends/mysql,然后将下列代码写入__init__.py import pymysql pymysql.install_as_MySQLdb()