У меня есть следующий код, с которым я не могу работать:
struct foo {};
foo foo1 = {};
template <foo& F>
class FooClass {};
template <foo& F>
void foobar(FooClass<F> arg) {
}
int main() {
FooClass<foo1> f;
foobar(f);
}
Ошибка:
main.cpp: 14: 5: ошибка: нет соответствующей функции для вызова foobar
note: шаблон-кандидат игнорируется: сбой замены: выведенный аргумент шаблона не-типа не имеет того же типа, что и соответствующий ему параметр шаблона ('foo' vs 'foo &')
Возможно ли выводить параметры шаблона ссылочного значения lvalue? Если да, то как это сделать?