`auto`关键字在C ++ 11中用于推导类型。当用于替换初始化变量声明中的类型名称时,该变量的类型与初始化程序相同。当用作返回类型时,返回类型被指定为尾随返回类型,或者从return-expression推导出。
错误:在 lambda 参数声明中使用“auto”仅适用于“-std=c++14”或“-std=gnu++14”以及 PCL 错误[重复]
我正在使用链接“https://github.com/lixiny/handeye-calibration-ros”进行校准。 当我在 src/ Handeye-Calibration-ROS 下运行 catkin_make 时,出现以下错误: /usr/
C++ 17 允许为类创建推导指南,它们也可以应用于汽车吗? 这是我试图实现的简单示例。 #包括 结构体矩形 { INT...
我目前正在我的 Android 工作室上从事该项目,并成功构建了一个稳定的移动应用程序和可穿戴设备,它将从移动应用程序同步实时数据。然而,我很难尝试...
也许是一个奇怪的问题,但是有没有可用的软件,在给定一堆 c++11 代码的情况下,派生所有类型的自动类型变量并用这些派生类型重写代码?还有一个...
Visual Studio 代码 C++ 自动完成不适用于使用自动声明器创建的变量
我正在使用自定义类的代码库中处理 Visual Studio Code,当使用 auto 声明变量时,我的自动完成功能将不起作用。这是返回智能 p 的函数的示例...
让我使用有关占位符类型推导的最新草案:https://eel.is/c++draft/dcl.type.auto.deduct 第 3 部分内容为 [我的粗体突出显示]: 如果占位符类型指定...
什么可以触发 MS Access autoexec vba 宏?
我有这个 ms access 数据库(.mdb),其中包含一个运行 vba 子程序的 autoexec 宏。 它有效,但我有一群用户都说他们从不打开 .mdb 文件。 有...
使用“auto”迭代 C++ std::map 数据结构的含义
到目前为止,我一直使用迭代器来遍历映射中的所有键,如下所示: for (std::map::iterator it=mymap.begin(); it!=mymap.end(); ++it){ 标准:...
到目前为止,我一直使用迭代器来遍历 STL 映射中的所有键,如下所示: for (std::map::iterator it=mymap.begin(); it!=mymap.end(); ++it){ ...
就主题而言,我希望我的Excel公式在各自单元格上键入数据后自动显示日期和时间。我可以在 A 列和 B 列上获取日期和时间,同时在 C 列上键入数据。B...
传统上,人们从左到右阅读变量声明/定义,例如: std::vector arr = {3.14, 1.414, 2.71, -0.2}; 所以{3.14, 1.414, 2.71, -0.2}的意义是
如何在总是抛出异常的 `if constexpr` 分支中指定推断(自动)返回类型?
当函数体包含多个 if constexpr 分支并且其中一个无条件抛出时,如何指定具有推断(自动)返回类型的函数的返回类型? 返回类型必须
当执行“if constexpr () throw”时,声明“auto”返回类型的返回类型
当我有多个 if constexpr 并且其中之一抛出异常时,如何声明以 auto 作为返回类型的函数的返回类型? 返回类型必须满足特定的概念。不能为空。 我
请考虑这个示例 C++20 程序: #包括 #包括 auto make_vector( auto v[2] ) { return std::vector{v[0], v[1]}; } int main() { int x[2] = {1, 2}; ...
C++ 自动模板参数推导在 GCC 14 中不起作用,与旧版本和 Clang 不同
以下代码片段被 GCC 13 及更早版本以及所有版本的 Clang 接受,但不被 GCC 14 接受。两个建议的编辑中的任何一个都使 GCC 14 也接受该代码。 #包括 以下代码片段被 GCC 13 及更早版本以及所有版本的 Clang 接受,但不被 GCC 14 接受。两个建议的编辑中的任何一个都使 GCC 14 也接受该代码。 #include <iostream> template <int T> struct A { int value = T; }; // Replacing 'unsigned char' with 'int' makes it work with GCC 14: template <unsigned char X> using B = A<X>; // Or, replacing 'auto' with 'int' makes it work with GCC 14: template <auto X> void foo(B<X>& mat) noexcept { std::cout << mat.value << "\n"; } int main() { A<2> mat; foo(mat); } GCC 14 发出的错误如下,表示无法推导 auto 模板参数,除非将 auto 替换为特定类型或者别名的非类型模板参数与别名的非类型模板参数具有相同的类型别名模板: <source>: In function 'int main()': <source>:18:8: error: no matching function for call to 'foo(A<2>&)' 18 | foo(mat); | ~~~^~~~~ <source>:10:6: note: candidate: 'template<auto X> void foo(B<((unsigned char)X)>&)' 10 | void foo(B<X>& mat) noexcept | ^~~ <source>:10:6: note: template argument deduction/substitution failed: <source>:18:8: note: couldn't deduce template parameter 'X' 18 | foo(mat); | ~~~^~~~~ 哪个编译器是正确的? 它应该可以编译。 第 13.4.3/2 段描述了参数推导: (可能推导出来的)非类型模板参数 P 的值 类型 T 由其模板参数 A 确定,如下所示。如果 T 是 不是类类型并且 A 不是花括号初始化列表,A 应是 转换后的 T 类型常量表达式 (7.7); P 的值为 A(如 转换) 转换的过程在7.7/13中有描述: T 类型的转换常量表达式是一个隐式表达式 转换为 T 类型,其中转换后的表达式是常量 表达式和隐式转换序列仅包含 除缩小转换 (9.4.5) 之外的积分转换 (7.3.9), 我们在9.4.5/7中找到了缩小转换的描述,其中还详细说明了哪些转换被排除在外: 缩小转换是隐式转换... (7.4) — 从整数类型或无范围枚举类型到整数类型 无法表示原始类型的所有值,除了,其中 (7.4.1) — 源是一个位域,其宽度 w 小于 它的类型(或者,对于枚举类型,其基础类型)和 目标类型可以表示假设扩展的所有值 宽度为 w 且与原始符号具有相同符号的整数类型 type or (7.4.2) — 源是一个常量表达式,其值 积分促销后会符合目标类型 最后一个项目描述了当前情况,整数值 2 适合目标类型unsigned char,因此它被排除在缩小转换限制之外。
auto [ ] 语法是什么意思以及为什么它不能与 { } 一起使用[重复]
我一直以为C++17中的auto是实际数据类型的占位符,但在下面的例子中却并非如此: tuple permute(int a, int b){return {b,a};} int main(){ ...
乍一看似乎是一个非常微不足道的问题。 我有输入:字符串a,字符串b。 b 仅采用两个值,“string”和“int”。 我想声明一个新变量 var0,其类型为
我一直以为C++17中的auto是实际数据类型的占位符,但在下面的例子中却并非如此: tuple permute(int a, int b){return {b,a};} int main(){ ...
我一直以为C++11中的auto是实际数据类型的占位符,但在下面的例子中却并非如此: tuple permute(int a, int b){return {b,a};} int main(){ ...
在下面代码的上下文中,为什么是“cout << c" legal while "c = "x"" illegal?
我是 C++ 新手,正在尝试学习关键字“auto”和引用的概念。我在网上看到了这个问题和答案。 以下范围合法吗?如果是,c 的类型是什么? 常量...