Хорошо, это может показаться глупым вопросом, но вот он:
template <typename T>
void foo(T& x)
{
}
int main()
{
foo(42);
// error in passing argument 1 of 'void foo(T&) [with T = int]'
}
Что мешает C ++ создать экземпляр foo
шаблон функции с T = const int
вместо этого?