Обратите внимание на следующий код С++:
#include <iostream>
using std::cout;
int foo (const int);
int main ()
{
cout << foo(3);
}
int foo (int a)
{
a++;
return a;
}
Обратите внимание, что прототип foo() принимает значение const int и что определение принимает int. Эта компиляция без ошибок...
Почему нет ошибок компиляции?