一个列子演示vs2010 c++新特性

近日托安装雪豹的“福”,格了XP装了win7,前段时间看了C++0X标准以及VS2010诱人的新特性,不禁心痒痒在线安装了VS2010,然后手写了这个列子用来测试新增的特性。

struct _SUT {     int _a;     char _c; };
int _tmain(int argc, _TCHAR* argv[]) {     //auto关键字     auto i = 0.0f;     cout << typeid(i).name() << " i = " << i <<endl;     //静态编译断言     static_assert(sizeof(i) == 4, "sizeof(i) != 4");
    vector<int> v;     for (int i = 0; i < 10; i++)         v.push_back(i);
    //decltype关键字 & 空指针常量     decltype(i) b = 1;     decltype(b) *p = nullptr;     p = &b;
    //lambda表达式     for_each(v.begin(), v.end(), [&i, p](int n)     {         i += n;       www.90168.org  (*p)++;     });     cout << "i=" << i << "\t" << "b=" << b << endl;          //右值引用     _SUT lVal = { 1, ‘c‘};     _SUT &&rVal = move(lVal);     cout << "rVal._a = " << rVal._a << endl;
    return 0; }

PS:VS2010好用看得见,可惜只支持C++0X中的若干条新增特性,这就是现实(编译器厂商因为某种理由拒绝标准)与理想(语言标准)的差距啊。

Feedback

# re: 一个列子演示vs2010 c++新特性  回复更多评论

2010-06-10 16:43 by 空明流转

不是厂商拒绝标准,而是标准还没完成,所以VS只需要引入一部分就OK了,和当年的VC6的情况是一样的。

# re: 一个列子演示vs2010 c++新特性  回复 更多评论

2010-06-10 16:44 by 空明流转

还有,貌似你那个Move根本什么都没用到。#re: 一个列子演示vs2010 c++新特性  回复 更多评论

2010-06-13 16:07 by 乱78糟

@空明流转 怎么说呢,标准的制定者指定标准时既要考虑兼容性又要考虑编译器的实现复杂性,而厂商可能因为编译器的兼容或实现复杂度而拒绝支持某些标准,所以说是现实和理想的差距。
那个move的确没清晰的展示右值引用的特性,改成这样更为直观一些: _STU&& fun() { _SUT lVal = { 1, ‘c‘}; cout << "lVal._a = " www.90168.org<< lVal._a <<endl; return move(lVal); }
int main() { ... _SUT &&rVal = fun(); cout << "rVal._a = " << rVal._a << endl; }

时间: 2024-11-05 19:34:03

一个列子演示vs2010 c++新特性的相关文章

重新想象 Windows 8.1 Store Apps (84) - 图像处理的新特性, Share Contract 的新特性

原文:重新想象 Windows 8.1 Store Apps (84) - 图像处理的新特性, Share Contract 的新特性 [源码下载] 作者:webabcd 介绍重新想象 Windows 8.1 Store Apps 之图像处理的新特性, Share Contract 的新特性 图像处理的新特性 - 通过 RenderTargetBitmap 对 xaml 截图,以及保存图片 Share Contract 的新特性 - 增加 WebLink, ApplicationLink, 去掉

iOS9 collectionView新特性

近日因为系统升级导致xcode6.系列版本出现bug,于是开始使用xcode7.在使用之余突然想到collectionView在iOS9中发布了一个可以移动cell的新特性,就尝试着将其实现,无奈api文档接口无法查看,只有一些列的api放在那里.于是上网查找,发现国内没有搜索到此类文章,于是FQ继续找,最终找到的竟然都是swift版本,于是将其转换为oc版本以帮助国内需要的朋友学习使用.下面是具体用法: 1.创建collectionView并设置代理 - (UICollectionView *

即将到来的Android N,将具备这些新特性

原文转自:http://www.leiphone.com/news/201602/pSRQAuAjMFJITqHe.html         原创 訾竣喆 即将到来的Android N,将具备这些新特性 去年的I/O大会上Google表示,今后每一年的I/O大会上都会推出对Android重大更新后的新版本号.今年我们将可以在I/O大会看到Android的7.0版本号,也就是Android N.在I/O大会上推出之后,开发人员预览版就会每隔一月进行一次更新,直到10月推出正式版本号.Android

Spring版本功能变更&amp;Spring4.x的新特性

有朋友想知道Spring不同版本都有哪些功能变更,说直接在百度搜索找到的结果都不是想要的,其实还是关键词不对,找Spring不同版本的新特性就能获得更好的结果.其实在Spring工程github的wiki上也有说明,只是没那么显眼,放一个链接:https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-the-Spring-Framework What's New in Spring Framework 5.x

Mozilla新特性只支持https网站

Mozilla的官方博客2015.4.30正式宣布了淘汰HTTP的方案. 其中包括:设定一个日期,所有的新特性将只提供给HTTPS网站:HTTP网站将逐步被禁止访问浏览器功能,尤其是那些与用户安全和隐私相关的功能.Mozilla此举是向Web开发者社区发出一条信息,他们需要确保网站的安全性,而只有整个Web社区和浏览器开发商联合起来,淘汰HTTP才能真正实现. Mozilla计划不久之后向W3C WebAppSec工作组递交相关提议. 对于这项策略,也有不同的观点,总结无外乎以下几点: 1.SS

Mozilla新特性只支持https网站,再次推动SSL证书普及

Mozilla的官方博客2015.4.30正式宣布了淘汰HTTP的方案. 其中包括:设定一个日期,所有的新特性将只提供给HTTPS网站:HTTP网站将逐步被禁止访问浏览器功能,尤其是那些与用户安全和隐私相关的功能.Mozilla此举是向Web开发者社区发出一条信息,他们需要确保网站的安全性,而只有整个Web社区和浏览器开发商联合起来,淘汰HTTP才能真正实现. Mozilla计划不久之后向W3C WebAppSec工作组递交相关提议. 对于这项策略,也有不同的观点,总结无外乎以下几点: 1.SS

Red Hat OpenStack 10的新特性

这是Red Hat有史以来最好的版本,同时也是第一个长生命周期版本(最长五年支持),这篇文章会介绍为什么这是你私有云最好的礼物. 由于要使用命令行,以前安装OpenStack是很繁重的工作.这个版本提供了一个新的图形界面给Director.这是我们简化OpenStack部署目标的第一步,根据前几个月的内部测试反馈,在将来的版本将会有更多优化. 新的Director图形界面 另一个通过所有测试的新特性是分布虚拟路由(DVR),这个特性虽然功能上还有一些限制,但是已经是生产级别的,同时可以通过Dir

Atitit.&#160;visual&#160;studio&#160;vs2003&#160;vs2005&#160;vs2008&#160;&#160;VS2010&#160;vs2012&#160;vs2015新特性&#160;新功能.doc

Atitit. visual studio vs2003 vs2005 vs2008  VS2010 vs2012 vs2015新特性 新功能.doc 1.1. Visual Studio2 1.2. Visual Studio 972 1.3. Visual Studio 6.02 1.4. Vs20022 1.5. Vs20032 1.6. Vs20052 1.6.1. 数据访问  Web开发     Windows Forms 方面的开发特性增强2 1.6.2. Refactoring 2

java13-5 JDK1.5以后的一个新特性和Integer的面试题

1.JDK5的新特性 自动装箱:把基本类型转换为包装类类型 自动拆箱:把包装类类型转换为基本类型 注意一个小问题: 在使用时,Integer x = null;代码就会出现NullPointerException. 标准化:建议先判断是否为null,然后再使用. 1 public class IntegerDemo { 2 public static void main(String[] args) { 3 // 定义了一个int类型的包装类类型变量i 4 // Integer i = new