c++11 相关问题

将此标记用于必须编译为C ++ 11的代码(不使用C ++ 14或更高版本中引入的任何功能)。

为什么隐式定义的移动构造函数/赋值运算符的条件与复制操作不同?

为什么 C++ 编译器对自动生成的移动构造函数比对自动生成的复制构造函数或赋值运算符有更多限制? 自动生成动作

回答 3 投票 0

std::end 如何知道数组的结尾?

std::begin 和 std::end 知道容器或数组的开始和结束。 例如,知道向量的结束和开始非常容易,因为它是一个提供此信息的类。但是,如何

回答 3 投票 0

返回void? [重复]

我不明白为什么这段代码编译没有错误: #包括 模板 结构测试 { 静态 constexpr T f() {return T();} }; int main() { 测试 我不明白为什么这段代码编译没有错误: #include <iostream> template <class T> struct Test { static constexpr T f() {return T();} }; int main() { Test<void> test; test.f(); // Why not an error? return 0; } 按照标准可以吗,还是编译器可以容忍? 根据C++11标准草案,这看起来是有效的,如果我们看一下第5.2.3节显式类型转换(函数符号)段落2说(强调我的): 表达式 T(),其中 T 是简单类型说明符或 非数组完整对象类型的类型名说明符 或 (可能是 cv 限定的)void 类型,创建 指定类型,其值是通过值初始化产生的 (8.5) T 类型的对象; void() 没有进行初始化 案例。[...] 措辞也非常相似 C++11 之前。 这在 constexpr 中没问题,尽管第 7.1.5 段落 3 说: constexpr函数的定义应满足以下条件 限制条件: 并包括此项目符号: 其返回类型应为文字类型; and void 不是 C++11 中的 literal,根据第 3.9 段落 10,但是,如果我们然后查看第 6 段落,它给出了适合这种情况的例外,它说: 如果 constexpr 函数的实例化模板特化 类模板的模板或成员函数将无法满足 constexpr 函数或 constexpr 构造函数的要求, 该专门化不是 constexpr 函数或 constexpr 构造函数。 [ 注意:如果该函数是成员函数,它将 仍然是 const ,如下所述。 —尾注] 如果没有专业化 模板将生成 constexpr 函数或 constexpr 构造函数,程序格式错误;无需诊断。 正如 Casey 在 C++14 草案标准中指出的那样,void是一个文字,这是第 3.9 类型段落10说: 如果满足以下条件,则类型是文字类型: 并包括: ——无效;或 有关完整信息,请参阅@Shafik Yaghmour 的答案。 以下段落禁止非模板这样做(7.1.5(3)): constexpr函数的定义应满足以下约束: [...] 其返回类型应为文字类型或对文字类型的引用 详细来说,3.9(10)中将文字类型定义为标量类型或数组或结构中文字类型对象的组合。根据 3.9(9),void 不是标量类型。 您的函数返回 void() 的值,您本身并不是从 void 函数返回。您正在返回一个 NULL 值。你正在做的事情相当于这样: void f() { return void(); } 这会返回一个空值,唯一的空值。您不能从 void 函数返回任何其他内容,因为它将是不同的类型。

回答 3 投票 0

标准是否要求 std::array<T, 0> 的行为就像没有尾随填充? [重复]

标准要求 std::array 必须明确定义,即使大小为零,因此即使不允许 int[0],std::array 也是明确定义的(尽管 GCC 实现了 exte ...

回答 1 投票 0

增加 ptr 以迭代数组时,nullptr 检查出现分段错误

以下代码在编译和运行时会出现分段错误。我正在 MacBook 上尝试《C++ 之旅》第 12 页上的示例。 编译命令- clang++ -Wall -std=c++11 -o 替换...

回答 1 投票 0

指向 std::vector 的指针作为输出参数

我将一个指向向量的指针作为函数中的输出参数,我不知道这是否是最佳实践: 状态接口::method(const std::vector** outVec); 我正在写...

回答 1 投票 0

当共享访问极其罕见时,在 Windows 中使用 c++11 锁定资源的最有效方法?

我有一个 C++ 类,其中包含规则列表。一个函数添加/删除此类的规则,另一个函数根据规则进行一些检查(例如,将 PID 作为输入,然后基...

回答 1 投票 0

std::exception_ptr 可以包含 __cxxabi::__forced_unwind 吗?

在 GNU/Linux 上,pthread_cancel 是通过 __cxxabi::__forced_unwind 类型的特殊异常实现的,因此当取消线程时,会引发异常并展开堆栈。因此,一...

回答 1 投票 0

如果我只向映射添加条目并修改它们,但不删除,是否需要对 c++ unordered_map 使用同步?

我有一个回调,每次创建或终止进程时都会调用该回调。 现在我有一个映射,其中每个条目都是一个进程ID,并且它包含进程信息。我将流程设置为...

回答 1 投票 0

没有匹配的函数可用于调用“std::thread::thread(<unresolved overloaded function type>)”

无效show_image(){ // 创建一个Mat来存储图像 马特凸轮图像; ERROR_CODE 错误; // 循环直到'e'被按下 字符键=''; while (key!= 'e') { // 抓取图像 错误= cam.grab(); ...

回答 2 投票 0

创建共享对象时不能使用针对“.rodata”的重定位 R_X86_64_32;使用-fPIC重新编译

所以我一直在尝试用 -fPIC 重新编译,但似乎我遇到了同样的错误,我做得对还是错过了其他东西? 全部: pr1 pr2 pr1: g++ -std=c++11 -fPIC -c $(通配符...

回答 1 投票 0

在线程中渲染时窗口内容混乱

所以,当我像这样运行我的程序时,弹出的窗口很好,带有我之前附加的PNG图像: 无效渲染(窗口* w){ w->渲染(); } int main(int argc, char** args){ &...

回答 1 投票 0

“使用 std::swap”如何启用参数依赖查找(ADL)?

在什么是复制和交换习惯用法中显示了以下示例: friend void swap(dumb_array&first,dumb_array&second) // 不抛出异常 { // 启用 ADL(在我们的例子中不是必需的,但很好的做法...

回答 2 投票 0

从初始值设定项列表转换为“A”将使用显式构造函数“A::A(int)”

我正在尝试将旧的 C++03 代码库迁移到 C++11。但我无法理解 gcc 在以下情况下警告我的内容: % g++ -std=c++03 t.cxx % g++ -std=c++11 t.cxx t.cxx:功能中...

回答 1 投票 0

std::shared_ptr::reset 的目的是什么?

这是一个基本问题,但我没有找到以前的帖子。以下问题的标题听起来可能和我的问题相同,但问题本身不匹配...

回答 4 投票 0

TMP:如何推广向量的笛卡尔积?

对于整数向量的向量的笛卡尔积,有一个出色的 C++ 解决方案(实际上有 2 个解决方案:递归和非递归)。为了说明/简单起见,让我们...

回答 2 投票 0

作用域枚举的详细类型说明符不得使用“class”关键字

我有以下枚举规范: 枚举类 FaceDirection : int8 { 向下, 向上 }; g++ 4.8.1 给出以下错误: 警告:作用域枚举的详细类型说明符不得...

回答 1 投票 0

在C++11中用“auto”推导时,lambda的类型是什么?

我有一种看法,lambda 的类型是函数指针。当我执行以下测试时,我发现它是错误的(demo)。 #define LAMBDA [] (int i) -> long { return 0; } int 主函数 () { ...

回答 9 投票 0

定义类时常用的成员变量存放在哪里?

我定义了一个简单的类: A级 { 民众: 整数a; }; sizeof(A)是4,所以我很困惑,当我刚刚定义这样一个类时,公共成员变量a存储在哪里?栈还是堆?

回答 2 投票 0

在每次迭代的 for 循环中计算向量大小是否昂贵? [重复]

C++ 编译器是否处理诸如建筑物是向量之类的情况: 对于 (int i = 0; i < buildings.size(); i++) {} that is, does it notice if buildings is modified in the loop or not, and then ...

回答 6 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.