Проблема в указанной строке заключается в том, что у вас есть несоответствие типов между переменной f
и ее инициализатором:
foo<int> f = &x;
Переменная имеет тип foo<int>
, в то время как инициализатор имеет тип int*
, а foo<int>
не имеет конструктора, принимающего int*
в качестве аргумента. Обратите внимание, что знак равенства в определении переменной указывает на инициализацию, а не на присвоение.
Обратите внимание, что у кода больше проблем. Многие из них связаны с непоследовательным использованием идентификатора ptr
(иногда как переменная-член, иногда как функция, иногда как тип), с недопустимым использованием &
и другими ошибками несоответствия типов.