c++11相关内容

shared_ptr和weak_ptr的区别

我正在阅读Scott Meyers的“Effective C ++”一书。它提到有 tr1 :: shared_ptr 和 tr1 :: weak_ptr 像内置指针,但他们跟踪多少 tr1 :: shared_ptrs 指向一个对象。 这被称为引用计数。这在防止非循环数据结构中的资源泄漏方面效果很好,但是如果两个或多个对象包含 tr1 :: shared_ptrs ,使得循环形成,循环可以 ..
发布时间:2016-10-13 10:04:06 C/C++开发

我允许做一个静态,constexpr,类的初始化数据成员?

这可能是一个不寻常的问题,因为它要求更全面的解释给一个简短的回答另一个问题以及与之相关的C ++ 11标准的一些方面。 为了便于参考,我将在这里总结引用的问题。 OP定义了一个类: struct Account { static constexpr int period = 30; void foo(const int&){} void bar(){foo(period ..
发布时间:2016-10-13 10:02:10 C/C++开发

当对象没有数据成员时,统一初始化无法复制

在更新一些代码以使用统一初始化,我认为这将是一个现代的替代现在的“旧风格”括号风格。我知道这并不总是这样(很明显的例子, vector )但是我偶然发现了另一个我不明白的区别。 class Object { public: Object()= default; Object(const Object&)= default; }; int main(){ 对象o ..
发布时间:2016-10-13 10:02:07 C/C++开发

stoi和std :: to_string on mingw 4.7.1

我想把我的C ++ 11程序到Windows,但似乎在mingw 4.7.1没有stoi和std :: to_string实现。我知道它已被问及有一个解决方案来编辑​​一些标题,但在我的mingw版本(4.7.1随附codelite)标题是不同的,没有精确的行,我必须移动(可能是因为答案对于mingw 4.6)。 所以我的问题是如何获得这些功能在mingw 4.7? 有没有任何指南在4.7 ..
发布时间:2016-10-13 09:59:36 C/C++开发

别名模板专门化

别名模板(14.5.7)是否可以被显式地专门化(14.7.3)? 我的标准库不能使用, 文本“当模板标识引用别名模板的特殊化”意味着是,但是示例 ,一个在FDIS后面,其中本节的标题是“别名模板”。 Lol。 解决方案 “特殊化”的标准意味着通用模板到 >更专业的实体。例如,实例化非成员类模板会生成不再是模板的类。术语“特殊化”是两个方面,并且可以指生成的特化(其是实例化的特殊 ..
发布时间:2016-10-13 09:56:52 C/C++开发

使用导出关键字与模板

据我所知“出口”关键字可以使用,使人们可以通过一个头文件和抽象的实际执行在一个库文件揭露模板类或函数签名。结果 谁能请提供实用的示例程序,它显示了如何做到这一点? 在使用这一点时是否有任何缺点或重要的要点? 编辑:基于答案的后续问题。如答案中提到的,“export”在C ++ 0x中已弃用,并且甚至对于C ++ 03x也很少被编译器支持。鉴于这种情况,用什么方式可以在一个隐藏的lib ..
发布时间:2016-10-13 09:54:07 C/C++开发

C ++ 11 static_assert和模板实例化

在C ++ 11中,模板中static_assert的操作是否取决于模板是否被实例化?例如,使用以下代码 template void sa(){static_assert(0,“Hello。”); } int main(int argc,char * argv []){return 0; } GCC 4.5.0将失败断言,并产生“Hello” ..
发布时间:2016-10-13 09:53:59 C/C++开发

移动向量始终为空?

N3485 17.6.5.15 [lib.types.movedfrom] / 1: 在C ++标准库中定义的类型对象可以从(12.8)移动。可以显式指定或隐式生成移动操作 。除非另有说明,否则此类移动对象应置于有效但未指定的状态。 code> vector 明确将其从此段落中排除。然而,我不能想出一个正确的实现,将导致向量不为空。 有一些标准,这意味着我失踪或是类似于处理 b ..
发布时间:2016-10-13 09:52:11 C/C++开发

关于如何识别Rvalue或Lvalue引用和if-it-has-a-name规则

我正在阅读Thomas Becker的关于右值引用及其使用的文章。在那里他定义了他所说的 if-it-has-a-name 规则: 声明为右值引用可以是lvalues或 rvalues。区分标准是:如果它有一个名称,那么它是 一个左值。否则,它是一个右值。 这听起来很合理。它还清楚地标识了右值引用的重要性。 我的问题是: 您同意这项规定吗?如果没有,您可以举一个违反此规 ..
发布时间:2016-10-13 09:50:50 C/C++开发