c++11相关内容

Visual Studio 2012 __cplusplus和C ++ 11

任何人知道为什么 __ cplusplus 在我的Visual Studio中定义为 199711L (这是“旧的”C ++) 2012 c ++项目?是否应该说 201103L ,因为VS 2012现在有C ++ 11支持?即使我包括C ++ 11头,它仍然是错误定义。任何线索? 解决方案 这已提交给Microsoft审查: 预定义宏的值__cplusplus仍然是199711L ..
发布时间:2016-10-11 22:43:48 C/C++开发

可以通过C ++ 11/14中的值返回一个局部变量导致在没有复制/移动时由rvalue构造的返回值?

我知道在以下情况下,编译器可以自由移动 - 从 makeA (但是也可以免费复制或移动) : struct A { A(A&); A(A&&); }; makeA() { A localA; return localA; } 我不知道是否允许编译器构造一个类型如果在return语句中构造,通过右值引用从 B 类型的本地对象返回一个。换句话说, ..
发布时间:2016-10-11 22:43:35 C/C++开发

禁用Eclipse的错误发现。 (Codan假阳性)

我现在的经验是,Eclipse的错误发现是没有任何解决方案可怕的buggish尝试 __ GXX_EXPERIMENTAL_CXX0X __ , -std = c ++ 0x , -std = c ++ 11 )。我在这一点,我不想搜索一个解决方案不再。现在我只想看到真正的编译器错误。但是如何实现这一点呢? 解决方案 更新:答案已经过时了。我今天(2014年3月15日)仔细检查:在Ecli ..
发布时间:2016-10-11 22:41:42 Java开发

为什么我们需要将函数标记为constexpr?

C ++ 11允许使用 constexpr 说明符声明的函数在常量表达式(如模板参数)中使用。对于允许 constexpr 有严格的要求;基本上这样的函数只封装一个子表达式而不包含其他。 (编辑:这是放宽在C ++ 14,但问题是。) 为什么要求关键字? 获得的是什么? 它有助于揭示接口的意图,但它不会通过保证函数在常量表达式中可用来验证该意图。写入 constexpr 函数后,程序员 ..
发布时间:2016-10-11 22:41:30 C/C++开发

我们可以通过值从函数返回具有删除/私有复制/移动构造函数的对象吗?

在C ++ 03中,不可能通过值返回具有私有非定义复制构造函数的类的对象: struct A {A(int x){...} private:A(A const&); }; A f(){ return A(10); //错误! return 10; //错误了! } 我想知道,这个限制在C ++ 11中解除,可能写入具有类类型返回类型的类的函数没有用于复制或移动 ..
发布时间:2016-10-11 22:40:32 C/C++开发

什么构成了“从其移动”的有效状态,对象在C ++ 11?

我一直在试图围绕C ++ 11中的移动语义如何工作,而且我很难理解移动对象需要满足的条件。查看这里的答案不能真正解决我的问题,因为不能看到如何以明智的方式将它应用于pimpl对象,尽管移动语义是完美的pimpls 。 我的问题的最简单的例子涉及pimpl成语,如下: class Foo { std :: unique_ptr impl_; public: ..
发布时间:2016-10-11 22:40:29 C/C++开发

GotW#101“溶液”实际上解决什么?

首先阅读Herb's Sutters在C ++ 11中有关pimpl的帖子: GotW#101:编译防火墙,第2部分(难度:8/10) 我在理解GotW#101中提出的解决方案时遇到一些麻烦。据我所知,在GotW#100中艰苦地解决的所有问题都回到了复仇之中: c $ c> pimpl 成员是超出范围的模板,并且定义在使用时不可见(在类窗口小部件 s类定义和隐式生成 widget ..
发布时间:2016-10-11 22:39:21 C/C++开发

推断lambda或任意可调用的“make_function”的调用签名。

在某些情况下,需要能够使用 operator(),lambda, mem_fn ),例如在使用Boost适配器与C ++ 11 lambdas 其中需要一个可复制赋值和默认构造类型。 std :: function 将是理想的,但似乎没有办法自动确定什么签名实例化类模板 std :: function 与。有一个简单的方法来获取任意可调用的函数签名和/或将它包装在适当的 std :: fun ..
发布时间:2016-10-11 22:38:09 C/C++开发

使用SFINAE检测constexpr

我正在努力升级一些C ++代码以利用C ++ 11中的新功能。我有一个trait类与几个函数返回基本类型,这在大多数时候,但不总是,返回一个常量表达式。我想根据函数是否 constexpr 做不同的事情。我想出了以下方法: template struct test { template s ..
发布时间:2016-10-11 22:36:37 C/C++开发

May std :: vector使用小缓冲区优化?

我想知道我的同事今天是否std :: vector可以实现使用小缓冲区优化。通过查看C ++ 11草稿,我在23.3.1p8阅读 表达式a.swap(b)和b不是数组的标准容器类型,应交换a和b的值,而不调用对各个容器元素的任何移动,复制或交换操作。 这首先似乎违反了小缓冲区优化,但是在as-if规则下,我们仍然可以做小缓冲区非类类型的优化(因为我们不能观察到拷贝)。下一个文本似乎更难 ..
发布时间:2016-10-11 22:36:15 C/C++开发