auto相关内容

向量<bool>::operator[] 不当行为?

可能重复: 为什么vector::reference不返回对bool的引用? 我曾经认为使用 std::vector::operator[] 我们可以获得访问项目的 deep 副本,但似乎并非总是如此.至少,使用 vector 以下测试代码会给出不同的结果: #include #include 使用命名空间标准;模板 ..
发布时间:2022-01-19 17:44:15 C/C++开发

哪些 IDE 和文本编辑器可以推断在 C++11 中使用 auto 关键字声明的变量类型

在 "几乎总是自动" 文章 Herb Sutter 列出了使用 auto 关键字声明变量的几个原因. 他说实际的变量类型可以由 IDE 自动推导出,并通过将鼠标悬停在变量名称上来显示. 我想知道目前哪些 IDE 和文本编辑器(或插件)支持“自动"变量类型推导. 编辑: 来自答案的 IDE 列表: Visual Studio 201x 日蚀 Qt Creator 2 ..
发布时间:2021-11-30 18:22:41 C/C++开发

const auto & 之间的区别和汽车 &如果引用对象是 const

//case 1const int i = 42;const auto &k = i;//情况 2const int i = 42;自动 &k = i; 在这种情况下,我们需要在 auto 之前使用 const 关键字吗?毕竟,对自动推导类型的引用 (k) 将包括对象的顶级 const (constcode> int i).所以我相信 k 在这两种情况下都会引用一个常量(const int &k ..
发布时间:2021-11-30 18:22:16 C/C++开发

从函数中正确传播 `decltype(auto)` 变量

(这是 "`decltype(auto)` 变量是否有任何实际用例?") 考虑以下场景 - 我想将一个函数 f 传递给另一个函数 invoke_log_return 它将: 调用f; 打印一些东西到stdout; 返回f的结果,避免不必要的复制/移动并允许复制省略. 请注意,如果 f 抛出,则不应向 stdout 打印任何内容.这是我目前所拥有的: template ..
发布时间:2021-11-30 18:22:09 C/C++开发

带和不带指针声明符的 C++11 自动声明

bar1 和 bar2 的类型有什么区别? int foo = 10;auto bar1 = &foo;自动 *bar2 = &foo; 如果 bar1 和 bar2 都是 int*,写指针声明符 (*>) 在 bar2 声明中? 解决方案 声明完全等效.auto 的工作方式(几乎)与 模板类型推导 相同.显式放置星号会使代码更易于阅读,并使程序员意识到 bar2 是一个指针. ..
发布时间:2021-11-30 18:22:01 C/C++开发

“decltype(auto)"变量是否有任何实际用例?

从我的个人经验和咨询诸如 有哪些用途的问题的答案decltype(auto)?我可以找到许多将 decltype(auto) 作为函数返回类型占位符的有价值的用例. 然而,我很难为 decltype(auto) 变量想到任何有效的(即有用的、现实的、有价值的)用例.想到的唯一可能性是存储返回 decltype(auto) 的函数的结果以供以后传播,但 auto&& 也可以在那里使用,并且会更 ..
发布时间:2021-11-30 18:21:51 C/C++开发

函数模板与自动关键字

C++11 中的auto 关键字能否替代函数模板和特化?如果是,与简单地将函数参数输入为 auto 相比,使用模板函数和特化有什么优势? template void myFunction(T &arg){//~} 对比 void myFunction(auto &arg){//~} 解决方案 简而言之,auto 不能用来省略函数参数的实际类型,所以坚持使用函数模板和/或重载.auto 合 ..
发布时间:2021-11-30 18:21:43 C/C++开发

C++ 返回不同的对象

我有一个大问题..我想通过包装类选择存储服务.返回值必须是存储服务类中的对象.我粘贴了我目前的方法.但到目前为止,我的心态并没有奏效. 错误: 错误:自动返回类型推导不一致:‘SQL*’然后‘REDIS*’返回新的REDIS(); 最大的愿望是有一个接口类来定义结构和一些“驱动程序类",其中包含目标存储服务的所有必要操作. 我希望你有另一种方法,我如何解决这个问题.. ..
发布时间:2021-11-30 18:21:15 C/C++开发

为什么基于范围的 for 循环不修改容器元素?

我最近观察到修改自动迭代向量中的数据不会为我产生正确的结果.例如,当我尝试对 vector of vector 的元素进行排序时,有些元素没有排序但代码运行成功 vector>啊;arr.push_back({38, 27});for(自动 v : arr){排序(v.begin(),v.end());} 上面代码排序后的输出仍然是38,排序后的27.而当我排序为 sort(arr[0].be ..
发布时间:2021-11-30 18:21:04 C/C++开发

身份功能:模板和自动之间的区别

我正在为我的一些类编写一个标识函数,用于记录调用次数(长话短说:指标). 目前,我正在尝试计算使用模板与 auto 的性能差异/优势. 这是从我正在做的代码中提取的一个简短示例: 命名空间指标{无符号长标识 = 0;//自动版本自动身份(自动我){//... 其他东西身份++;返回我;};//模板版本模板我身份(我我){//... 其他东西身份++;返回我;};}; 还有一些事情要 ..
发布时间:2021-11-30 18:20:55 C/C++开发

boost Spirit 语法的不一致行为

我有一些语法要用于工作项目.一个最小的可执行示例是: #pragma GCC 诊断推送#pragma GCC 诊断忽略“-Wunused-local-typedefs"#pragma GCC 诊断忽略“-Wmaybe-uninitialized"#pragma GCC 诊断忽略“-Wunused-variable"#include #include #include #include #prag ..
发布时间:2021-11-30 18:20:49 C/C++开发

C++11 中的自动引用

我在关于自动引用时遇到了一些问题. const int i = 1;汽车&ri1 = i;汽车&ri2 = 1;//错误 为什么推导类型是 ri1 const int 而不是 ri2? 谢谢! 解决方案 由于 i 的类型为 const int,而 1 的类型为 int. ..
发布时间:2021-11-30 18:20:40 C/C++开发

auto c++ 关键字有什么作用?

我最近遇到了 C++ 中的关键字 auto. 在代码中: auto maxIterator = std::max_element(&spec[0], &spec[sampleSize]);float maxVol = *maxIterator;//规范化如果(最大音量!= 0)std::transform(&spec[0], &spec[sampleSize], &spec[0], [ma ..
发布时间:2021-11-30 18:20:29 C/C++开发