Вот ситуация:
void funct( unsigned u, double d, float f )
{
u = 12;
}
void funct( double u, int d, void* asd, float f )
{
u = 13;
}
int main()
{
const unsigned u = 123;
double d = 123.123;
float f = 123.123;
funct( u, d, f, 123 );
return 0;
}
дает мне:
./src/test.cpp:19: error: no matching function for call to 'funct(const unsigned int&, double&, float&, int)'
./src/test.cpp:4: note: candidates are: void funct(unsigned int, double, float)
./src/test.cpp:8: note: void funct(double, int, void*, float)
Это абсолютно ожидаемая ошибка, так как нет подходящей функции для вызова, хорошо, хорошо.Но взгляните на ошибку компилятора:
V V V
no matching function for call to 'funct(const unsigned int&, double&, float&, int)
Почему эти &
есть?Когда я делаю правильный вызов - все в порядке, и все параметры, как и ожидалось, не передаются в качестве ссылок.
Использование Ubuntu 10.04
, 64bit и g++ version 4.4.3