可能重复:
返回类型是函数签名的一部分吗?
关注一个相关但相切的问题(如何消除仅由返回类型不同的函数模板?),我想问一个与函数的返回类型不被认为是签名的一部分有关的问题一个功能.
请考虑以下代码:
#include <iostream>
int foo()
{
return 0;
}
int main()
{
long n = static_cast<long(&)()>(foo)(); // Error: incorrect return type
int p = static_cast<int(&)()>(foo)(); // Compiles just fine
}
Run Code Online (Sandbox Code Playgroud)
的代码行上面提到编译错误的结果,因为该返回功能类型的类型,其foo被强制转换不匹配返回功能的类型foo.
但我认为函数的返回类型在函数的签名中不起作用!
根据某种思路,由于函数签名long(&)()与签名匹配foo,foo对此类函数的强制转换应该成功.
但是,演员阵容没有成功.推理在哪里出错了?如果演员阵容因功能签名而无法失败,那么为什么演员阵容失败?
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |