cost 262 ms
具有自动非类型模板参数的 function 模板的重载解决方案 - Overload resolution for function templates with auto non-type template parameter

function 在非类型模板参数的情况下,如果参数之一是占位符类型,则重载模板的选择规则是什么。 我对编译器的当前行为感到困惑,请考虑下一个示例: 这里 MSVC 在两组重载之间无法达到 select。 另一方面, GCC 始终选择具有更具体类型<int>的 function 模板。 ...

const“this”指针是否意味着其所有成员的常量性? - Does const "this" pointer implies constness of all its members?

我知道如果我们在 function 声明之后添加一个“const”限定符,这意味着隐含的“this”指针变为 const,因此我们不能直接修改任何成员但是,在 const 成员 function 中,每个成员是否也自动成为 const? 为了说明我要问的问题,这是一个演示程序 在 baz() 方法 ...

是否可以将模板 T 解析为数组引用而不是指向数组的指针? - is it possible to resolve template T to array reference instead of pointer to an array?

免责声明:这是一个XY 问题类型的问题。 是否可以将template <typename T>解析为(const T (&)[N])重载而不是(const T*) ? 例如: 为什么_print_type("oceanic"); 结果调用不明确? 当有数组时,更喜欢引用数组的重 ...

自定义类型转换的重载解析 - Overload resolution of user-defined type conversion

我考虑了从一种类型到另一种类型的类型转换,它通过两种方式定义,即类型转换构造函数和类型转换函数。 gcc(v13.0.0,但即使在 v4.9.4 中似乎也一样)不要抛出任何错误,只需在上面的代码中调用类型转换构造函数。 另一方面,clang(v16.0.0,但即使在 v7.6.0 中似乎也相同)抛 ...

C 链接的重载如何在 C++ 中工作? - how does overloading with C linkage work in C++?

考虑这个例子: 它出错了: 这很好。 但是让我们交换前两行: 现在它编译没有任何错误,但是选择了 C 链接,即使最后找到了 C++ 链接。 问题: 为什么案例 2 编译而案例 1 失败? 我希望他们的行为方式相同。 对于编译的案例2,为什么选择C链接,是否可以更改? 背景:我有一个 C++ 程序, ...

编译器通过用户定义的右值引用转换以不同方式处理重载决议 - Compilers work differently for overload resolution with user-defined conversion to rvalue reference

当 gcc 和 clang select 不同的重载构造函数从用户定义的转换运算符隐式转换时,我遇到了一个奇怪的行为。 有关代码在这里:#include <cstdio> #include <utility> #include <type_traits> tem ...

[over.load]/1 中的 Note 有什么相关性? - What's the relevance of the Note in [over.load]/1?

(您可能会将此问题视为与此问题的重复,但老实说,我并没有真正理解这个问题,所以我用自己的措辞单独询问。) [over.load]/1内容为: 并非所有 function 声明都可以重载。 那些不能重载的都在这里指定。 如果一个程序在同一个 scope 中包含两个这样的不可重载声明,则该程序是格 ...

通过转换 function 进行初始化,用于直接引用绑定 - Initialization by conversion function for direct reference binding

我发现至少对我来说,标准没有清楚地描述确定候选转换函数的规则,用于直接引用绑定。 规则可在 [over.match.ref] 中找到在 [dcl.init.ref] 中指定的条件下,引用可以直接绑定到将 function 转换为初始化表达式的结果。 重载解析用于select转换function被调用 ...

int vs std::vector 的重载分辨率<int>带有单个 int 的初始化列表</int> - Overload resolution of int vs std::vector<int> with an initializer list of a single int

为什么 c++ 选择原始类型重载匹配而不是“更好”匹配的初始值设定项列表? #include &lt;vector&gt; void foo([[maybe_unused]] int i) {} void foo([[maybe_unused]] const std::vector&lt;int ...

重载分辨率和数组到指针衰减 - 为什么 int (&amp;a)[2] 和 int* a 被认为在重载分辨率方面同样准确 - Overload resolution and array-to-pointer decay - why is int (&a)[2] and int* a considered equally exact regarding overload resolution

tl;博士; 为什么 - 关于重载决议/函数声明 - pointer type被视为比array type更精确匹配,即使传递的变量实际上是array type而不是“只是” pointer type 我已经查看了一些关于重载解析和数组到指针衰减的等效问题(例如21972652 、 29602 ...

可变参数模板函数在非可变参数上的特化 - Specialization of variadic template function over the non-variadic arguments

我有一个函数模板,该函数接受至少一个参数并对其余参数执行一些格式化: 当第一个参数是特定类型时,我希望它做不同的事情。 我喜欢编译器选择这个特定的版本,其余的可变参数都被忽略了。 所以我尝试了模板专业化: 或者: 我也尝试了非模板化的重载,尽管它总是选择第一个版本。 调用者代码应该根本 ...

参数的值类别在重载决议的哪一部分(或更一般的函数调用处理)中起作用? - What part of overload resolution (or more generally of the function call processing) does the value category of the argument play a role in?

C++ 模板 - 完整指南,在 §C.1 中,内容为 执行重载解决以找到最佳候选者。 如果有,则选中; 否则,调用是模棱两可的。 然后,在 §C.2 中,像这样(我的重点)对可能的匹配(给定参数与可行候选者的相应参数)进行排名: 完美的一对。 parametere ...

类模板中声明的友元函数的模板参数的扣除 - Deduction of template arguments for friend function declared in class template

考虑以下示例: 我的理解是表达式Func(U{})导致函数Func的非限定名称查找,并通过 ADL 找到声明decl-2 。 但是,这不是重载决议的可行候选函数(因为它没有定义),因此编译器选择声明decl-1 。 误解,与问题无关,请参阅@LanguageLawyer 的评论 我的问题是标准中 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM