`auto`关键字在C ++ 11中用于推导类型。当用于替换初始化变量声明中的类型名称时,该变量的类型与初始化程序相同。当用作返回类型时,返回类型被指定为尾随返回类型,或者从return-expression推导出。
让我使用有关占位符类型推导的最新草案: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 的类型是什么? 常量...
因此,我必须使用 Android 上的 Remini 应用程序增强上千张不同的图像。 我尝试手动处理这些图像,但每张图像都花费了我 30 秒的时间和大量的精力。什么是...
当我尝试编译我的自动热键(ahk)代码时出现此错误。 Ahk2Exe 错误 错误:脚本包含语法错误。 具体来说: C:\Users\ibraheem\Downloads .ahk (1) : ==> 这行没有
考虑这个简单的例子: 结构类{ 结构内部{}; 静态内a; }; 我无法使用以下语法定义这个 a: 自动类::a = 内部{}; - gcc 和 msvc 都类似地抱怨...
Detecte 自动检测 MKV 视频(videojs 或其他)的字幕
我正在寻找一种解决方案来检测MKV视频的字幕,以便将它们自动添加到播放器中,但经过两周的研究后我找不到它们,我真的希望你有一个解决方案。 ..
我正在寻找一个 C++ 23 auto(x) 有用的简单示例。 这是我到目前为止所拥有的: 结构体A { A() = 默认值; 显式 A(const A&) {} // 复制构造函数 }; 结构体 B { ...