Другой пример, если вы замените int на класс, где конструктор копирования является приватным, то вызывающая сторона не сможет сделать копию значения, и первый вариант foo не будет использован.

ляет ли что-то вроде следующего

void foo(int x)        { std::cout << "foo(int)"         << std::endl; }
void foo(const int &x) { std::cout << "foo(const int &)" << std::endl; }

когда-нибудь имеет смысл? Как вызывающий абонент сможет различить их? я пробовал

foo(9);  // Compiler complains ambiguous call.

int x = 9;
foo(x);  // Also ambiguous.

const int &y = x;
foo(y);  // Also ambiguous.

Ответы на вопрос(5)

Ваш ответ на вопрос