¿Hay alguna manera de pasar una referencia como argumento a un argumento de nombre de tipo de plantilla? Quiero decir que en lugar de pasar un int, por ejemplo, pasar una referencia a un int.
template <typename T>
struct Foo
{
Foo(T arg) : ptr(arg) {}
T ptr;
};
int main()
{
int* a = new int(6);
Foo<decltype(a)> foo1(a); // ptr is a copy of a pointer
Foo<decltype(&a)> foo1(&a); // ptr seems to be a pointer to a pointer
}
Sé que puedo hacer que el miembro 'ptr' sea una referencia a un puntero al convertirlo en T en la clase, pero me preguntaba si esto se puede hacer desde el argumento que se pasa al argumento de plantilla.
decltype
, porque tomando el título literalmente, simplemente podría escribirFoo<int*&>