我試圖在函數中看到默認參數提升。具體而言,我想測試第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