c++11相关内容

在C ++中,当decltype应用于它们时,什么表达式产生引用类型?

我是C ++的初学者。我正在阅读C ++ Primer,当一个表达式产生一个对象类型时,以及当它产生一个对象的引用类型时,我不太明白。 我从书中引用: 当我们将decltype应用于不是变量的表达式时, 一般来说,decltype返回一个引用类型,用于生成可以位于作业左侧的 对象。 $ b 考虑以下代码: int i = 3,* ptr =& i,& ref = ..
发布时间:2016-10-13 10:18:27 C/C++开发

为什么没有std :: protect?

为什么没有 std :: protect 与 std :: bind 一起使用++ 11 ? Boost.Bind 提供 boost :: protect helper,它包装它的参数,使 boost :: bind 不能识别和评估它。 std :: [c] ref 将是一个很好的替代大多数时间,除了它不会采用 rvalue 作为参数。 对于一个具体的例子,请考虑以下人为情况: ..
发布时间:2016-10-13 10:18:13 C/C++开发

为什么没有std :: is_struct类型trait?

我已经看到,为了检查类型 T 是一个类,我可以使用 bool isClass = std :: is_class :: value; 对于类和结构体都返回true。我知道在C ++他们几乎是一样的东西,但我想知道为什么他们之间没有区别在类型特征。 解决方案 对于类和结构体都返回true。我知道在C ++他们几乎是一样的东西,但我想知道为什么他们之 ..
发布时间:2016-10-13 10:18:02 C/C++开发

c样,构造函数和均匀初始化之间有什么区别?

TTBOMK,有三种方式在C ++中初始化变量。 int x = 0; // C-like initialization int x(0); //构造器初始化 int x {0}; //统一初始化 为C ++ 11提供了统一的初始化,用于初始化不同类型的变量,这在C ++ 03中需要不同的语法。 c样,构造函数和均匀初始化之间有什么区别? 解决方案 ..
发布时间:2016-10-13 10:16:31 C/C++开发

共享指针如何工作?

共享指针如何知道有多少个指针指向该对象? (shared_ptr,在这种情况下) 解决方案 基本上, shared_ptr 指针:指向共享对象的指针和指向包含两个引用计数的结构的指针:一个用于“强引用”,一个用于具有所有权的引用,另一个用于“弱引用”或不具有所有权的引用。 / p> 复制 shared_ptr 时,复制构造函数会增加强引用计数。当销毁一个 shared_ptr 时,析 ..
发布时间:2016-10-13 10:16:01 C/C++开发

哪些std :: async实现使用线程池?

使用 std :: async 而不是手动创建 std :: thread 对象的一个​​优点是是 std :: async 可以使用线程池下的覆盖,以避免超额预订问题。但是哪些实现这样做?我的理解是微软的实现,但是这些其他 async 实现呢? Gnu的libstdc ++ Gnu的libc ++ Just Software的库 Boost boost :: thread :: as ..
发布时间:2016-10-13 10:14:39 C/C++开发

shared_ptr<>是到weak_ptr<> as unique_ptr<>是...什么?

在C ++ 11中,您可以使用 shared_ptr 建立与对象或变量和 weak_ptr / code>与对象或变量建立所有权关系。但是如果其他的,非拥有的对象想要引用该对象呢? weak_ptr 在此情况下无效。原始指针是有用的,但带来了各种缺点(例如,他们可以自动初始化为nullptr ,但这是通过与 std :: * _ ptr ..
发布时间:2016-10-13 10:14:25 C/C++开发

为什么标准区分直接列表初始化和复制列表初始化?

我们知道 T v(x); 被称为直接初始化,而 T v = x; 被称为复制初始化,意味着它将从 x 构造一个临时 T / code>将被复制/移动到 v (这很可能被省略)。 对于列表初始化,标准区分两种形式,具体取决于上下文。 T v {x}; 被称为直接列表初始化 c $ c>被称为 copy-list-initialization : §8.5.4[dcl.init.list ..
发布时间:2016-10-13 10:11:39 C/C++开发

在哪里可以找到C ++ 11标准文件?

可能重复: 在哪里可以找到当前的C或C ++标准文档? 在哪里可以找到完整的C ++ 11标准?我知道它的特点是浮动在互联网上,但我似乎找不到文档本身。 解决方案 完整的最终标准,直接来自 ISO ,或某些国家机构。 您可能不想匆忙。 ANSI(对于一个)通常重新发布具有相同技术材料的官方版本 - 基本上唯一的变化是在标题页上说“ANSI / ISO”,而不是只是“ISO ..
发布时间:2016-10-13 10:11:17 C/C++开发

为什么从C ++ 11中删除对范围访问?

我刚刚发现有一点,C ++ 11草稿有 std :: begin / std :: end 重载 std :: pair 允许将一对迭代器视为适合在基于范围的for循环中使用的范围(N3126,第20.3.5.5节) 有人知道为什么会被移除吗? 非常不幸,因为它似乎没有其他方法来对待一对迭代器作为一个范围。确实: 在基于范围的for循环中,begin / end的查找规则表示be ..
发布时间:2016-10-13 10:10:30 C/C++开发

当使用基于范围的for循环时需要迭代器

目前,我只能使用以下方式执行基于范围的循环: for(auto& value:values) 但是有时我需要一个迭代器的值,而不是一个引用(无论什么原因)。是否有任何方法而不必通过整个向量比较值? 解决方案 使用旧的 循环为: for(auto it = values.begin(); it!= values。 end(); ++ it) { auto& ..
发布时间:2016-10-13 10:10:25 C/C++开发