This:
Foo<int&> f;
дает начало этому экземпляру:
class Foo<int&>
{
public:
void test(int&);
void test(int&);
};
const
, примененный к типу, который является ссылкой, является недопустимым.Сравните ее с нестатической функцией-членом, работающей с опорным элементом данных:
struct A {
int &ref;
// valid: const member function doesn't treat "ref" as "const int&".
void operate() const {
ref = 0;
}
};
Вы должны передать int
в Foo<...>
, чтобы достичь своей цели.