我试图在函数中看到默认参数提升。具体而言,我想测试第6.5.2.2节函数调用(描述为here)。函数默认参数提升
我想要一个无原型的函数调用,以查看默认参数提升为整数,但我得到“函数不带1个参数”错误。这是我想要做的:
#include<iostream>
using namespace std;
//void Func(char val);
//void Func(int val);
void Func(); // No prototype
int main(int argc, char** argv)
{
char charVal = 'a';
cout << "Func(charVal) - "; Func(charVal);
return 0;
}
void Func(char val)
{
cout << "Char arg. Result: " << val << endl;
}
void Func(int val)
{
cout << "Int arg. Result: " << val << endl;
}
我期望看到由于参数提升而被调用的函数(int)。 这是否已从标准中删除?
干杯。
P.S-我刚才看到这种无原型声明是C标准NOT C++的一部分。为什么C++不支持它的任何特定原因?
只有'Func()'重载在范围内 - 一个采用零参数的重载。促销与此无关。如果其他重载在范围内,则会选择'Func(char)'重载。 – 0x499602D2 2015-03-02 15:08:09