overload-resolution 相关问题

重载分辨率是一种语言机制,可以在几个可行的函数重载中进行选择。即使对于有经验的用户来说,它的规则也很复杂且经常令人惊讶。

over.over#note-2 的含义是什么?

是的,over.over#note-2(我在阅读这个答案时偶然发现的)是什么意思?我真的不明白。 作为上下文,我复制了下面 over.over#2 的文本: 如果没有ta...

回答 1 投票 0

在 C++ 中,为什么我不能获取也有模板版本的函数的地址?

下面是一段代码,尝试向另一个可以接受任何类型值的函数提供指向重载函数的指针: 模板 void AcceptAnything(T&&...

回答 1 投票 0

C++ 如何允许复制列表初始化以实现完美的转发功能?

假设我有一个完善的转发功能: 模板 void f(T&& t) { /* 做某事 */ } 我有特定类型 T,我想允许对其进行复制列表初始化,s...

回答 1 投票 0

编译器在使用参数相关查找和约束表达式的重载解析上存在分歧

在下面的程序中,模板函数 f 调用重载模板函数 p,其中一个重载是在 f 之后声明的,但据我了解,它必须在实例化点找到......

回答 2 投票 0

使用模板但不使用普通函数时由于隐式转换而导致歧义

我正在尝试编写一个自定义字符串类 MyString ,并从 const char* 进行隐式转换。 除此之外,我想通过移位运算符将 MyString 输出到任何 std::ostream 中。甚至更...

回答 1 投票 0

重载解析和模板参数推导 - 为什么 0 很特殊?

在下面的示例中,0 的行为方式很特殊,我想知道为什么。我的理解也如下。 #包括 模板 无效 f(T a) { std::cout <...

回答 1 投票 0

具有多个参数的函数重载的优先级混乱[重复]

我在学校学习C++。我们目前正在讨论重载函数的主题。我们进行了一个初始代码块的练习。然后,我们看到一个函数调用,我们必须确定哪个

回答 2 投票 0

带有std::function类型参数、nullptr值和shared_ptr类型的函数模板重载

下面的例子中,为什么最后一个调用的是以std::function为参数的函数重载呢? #包括 #包括 #包括 模板<...

回答 1 投票 0

使用“表达式 SFINAE”时如何获得普通 `auto` 返回类型的行为?

考虑以下代码。 结构小部件{ int& get(); }; 模板 自动 func_1(X& x) { 返回 x.get(); } 模板 自动 func_2(X& x) ->

回答 1 投票 0

重载决策中的参数包

考虑以下代码: 模板 void f(const T& a, const T&b) { std::cout << "#1"; } template void f(T&& ...a) { std::cout &l...

回答 1 投票 0

接受 const char(&)[N] 的函数模板比接受 const T& 的函数模板更专业吗?

我定义了两个版本的函数模板,名为compare: #包括 使用命名空间 std; // 拳头版本 模板 int 比较(const char (&a)[...

回答 1 投票 0

为什么重载解析在传递 {} 时更喜欢 std::nullptr_t 而不是类?

以下代码打印 nullptr 而不是空(godbolt 链接): #包括 类空 { }; #如果1 无效 f(std::nullptr_t) { std::cout << "nullptr\n"; } #endif...

回答 1 投票 0

为什么 C++ 解析为这个函数而不是那个函数?

以下代码打印 nullptr 而不是预期的空(godbolt 链接): #包括 类空 { }; #如果1 无效 f(std::nullptr_t) { std::cout << "nullptr\n&qu...

回答 1 投票 0

为什么概念约束不被视为上下文类型信息?

考虑: 无效 f(int); // (1) 无效 f(int, int); // (2) 自动 pf1 = static_cast< void (*)(int) >(f); // 好的,(1) 的地址 自动 pf2 = static_cast< void (*)(int, int) >(f); ...

回答 1 投票 0

有没有办法在编译时知道正在调用哪个版本的重载函数?

一种可能的方法是让重载函数的返回类型存储特定函数的信息: 模板 结构体tpinf { 我们...

回答 1 投票 0

如何 std::cout << a type which has many (ambiguous) user-defined conversion functions?

这里我有一个 C++ 类,它处理远远超出 long long 的大数。它将数据存储为 std::string。现在我这里有很多很多转换器: 类 BigInt { 私人的: std::字符串x;

回答 1 投票 0

传递 long 时 int32_t 或 int64_t 参数之间的不明确重载

注意:这与在编译时确定整型中的位数非常相似,但是这是一个非常简化的版本,全部包含在一个 .cpp 中 编辑:添加了一个解决方案 - 虽然

回答 2 投票 0

如何确保具有数组到指针转换的函数在重载解析中失败?

我希望能够在重载解析中区分数组和指针: 类字符串{ 民众: 字符串(const char* c_str); 模板 字符串(常量字符...

回答 3 投票 0

如何确保具有数组到指针转换的函数在重载决策中获胜?

我希望能够在重载解析中区分数组和指针: 类字符串{ 民众: 字符串(const char* c_str); 模板 字符串(常量字符...

回答 3 投票 0

在非常量对象上,为什么 C++ 不使用 public-const 和 private-non-const 重载来调用成员函数的 const 版本?

C级 { 民众: 无效 foo() 常量 {} 私人的: 无效 foo() {} }; int main() { Cc; c.foo(); } MSVC 2013 不喜欢这样: > 错误 C2248: 'C::foo' : 无法访问私有成员

回答 2 投票 0

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