c++11相关内容
阅读基于范围的循环的一些示例,他们建议两种主要方式 1 , 2 ,
..
我正在阅读Scott Meyers的“Effective C ++”一书。它提到有 tr1 :: shared_ptr 和 tr1 :: weak_ptr 像内置指针,但他们跟踪多少 tr1 :: shared_ptrs 指向一个对象。 这被称为引用计数。这在防止非循环数据结构中的资源泄漏方面效果很好,但是如果两个或多个对象包含 tr1 :: shared_ptrs ,使得循环形成,循环可以
..
这可能是一个不寻常的问题,因为它要求更全面的解释给一个简短的回答另一个问题以及与之相关的C ++ 11标准的一些方面。 为了便于参考,我将在这里总结引用的问题。 OP定义了一个类: struct Account { static constexpr int period = 30; void foo(const int&){} void bar(){foo(period
..
在更新一些代码以使用统一初始化,我认为这将是一个现代的替代现在的“旧风格”括号风格。我知道这并不总是这样(很明显的例子, vector )但是我偶然发现了另一个我不明白的区别。 class Object { public: Object()= default; Object(const Object&)= default; }; int main(){ 对象o
..
给出以下程序: #include int main() { std :: abs(0u); } gcc code> clang 不同意这是否是不成形的。使用 gcc 与 libstdc ++ 代码构建没有错误或警告( clang 与 libc ++ 使用 cang cang cull / melang.org/wandbox/pe
..
可能重复: Visual Studio 2012中的C ++ 11功能 所以我今天通过维基百科阅读了C ++ 11初始化列表,并看到C + +11支持标准容器的以下语法: std :: vector v({“x
..
我想把我的C ++ 11程序到Windows,但似乎在mingw 4.7.1没有stoi和std :: to_string实现。我知道它已被问及有一个解决方案来编辑一些标题,但在我的mingw版本(4.7.1随附codelite)标题是不同的,没有精确的行,我必须移动(可能是因为答案对于mingw 4.6)。 所以我的问题是如何获得这些功能在mingw 4.7? 有没有任何指南在4.7
..
我有一个问题,使用std :: thread传递数据到一个线程。我以为我理解复制构造函数等的一般语义,但似乎我不完全理解问题。我有一个简单的类叫Log,它隐藏了它的拷贝构造函数: class Log { public: Log(const char filename [],const bool outputToConsole = false); virtual〜Log(void
..
在C ++ 11中,std :: to_string 默认为6个小数位类型 float 或 double 的输入值。 解决方案 没有办法通过改变精度。 code> to_string(),但 setprecision 可以使用IO操作符: #include template std
..
别名模板(14.5.7)是否可以被显式地专门化(14.7.3)? 我的标准库不能使用, 文本“当模板标识引用别名模板的特殊化”意味着是,但是示例 ,一个在FDIS后面,其中本节的标题是“别名模板”。 Lol。 解决方案 “特殊化”的标准意味着通用模板到 >更专业的实体。例如,实例化非成员类模板会生成不再是模板的类。术语“特殊化”是两个方面,并且可以指生成的特化(其是实例化的特殊
..
我有以下代码: #include #include #include #include using namespace std; int sleep_10s() { this_thread :: sleep_for(chrono :: seconds(10)); cout
..
背景 请考虑以下代码: #include 命名空间ns { struct foo { foo():i(0){} int i; private: foo(const foo&); // not defined, foo& operator =(const foo&); // non-copyable }; void swa
..
据我所知“出口”关键字可以使用,使人们可以通过一个头文件和抽象的实际执行在一个库文件揭露模板类或函数签名。结果 谁能请提供实用的示例程序,它显示了如何做到这一点? 在使用这一点时是否有任何缺点或重要的要点? 编辑:基于答案的后续问题。如答案中提到的,“export”在C ++ 0x中已弃用,并且甚至对于C ++ 03x也很少被编译器支持。鉴于这种情况,用什么方式可以在一个隐藏的lib
..
在C ++ 11中,模板中static_assert的操作是否取决于模板是否被实例化?例如,使用以下代码 template void sa(){static_assert(0,“Hello。”); } int main(int argc,char * argv []){return 0; } GCC 4.5.0将失败断言,并产生“Hello”
..
请考虑此代码示例: #include #include typedef std :: function func1_t; typedef std :: function func2_t; struct X { X(func1_t f) {} X(func2_t
..
如果构造函数的执行顺序很重要,我如何使用std :: make_tuple? 例如,我猜测类A的构造函数的执行顺序, B类的构造函数未定义为: std :: tuple
..
N3485 17.6.5.15 [lib.types.movedfrom] / 1: 在C ++标准库中定义的类型对象可以从(12.8)移动。可以显式指定或隐式生成移动操作 。除非另有说明,否则此类移动对象应置于有效但未指定的状态。 code> vector 明确将其从此段落中排除。然而,我不能想出一个正确的实现,将导致向量不为空。 有一些标准,这意味着我失踪或是类似于处理 b
..
我想实现一个状态机。该状态由类型 callback_t : callback_t(int&)的函数表示,该函数返回相同类型的函数。 我不知道如何实现它,因为递归类型函数似乎不允许。 尝试(作为玩具): #include #include typedef std :: function
..
我正在阅读Thomas Becker的关于右值引用及其使用的文章。在那里他定义了他所说的 if-it-has-a-name 规则: 声明为右值引用可以是lvalues或 rvalues。区分标准是:如果它有一个名称,那么它是 一个左值。否则,它是一个右值。 这听起来很合理。它还清楚地标识了右值引用的重要性。 我的问题是: 您同意这项规定吗?如果没有,您可以举一个违反此规
..
我想通过 std :: bind 将值传递给在C ++ 0x中使用右值引用的函数。我不知道该怎么做。例如: #include #include template void foo(Type&& value) { Type new_object = std :: forward(valu
..