Existe uma maneira de passar uma referência como argumento para um argumento de nome de tipo de modelo? Quero dizer, em vez de passar um int, por exemplo, para passar uma referência a um 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
}
Eu sei que posso fazer com que o membro 'ptr' seja uma referência a um ponteiro, tornando-o T & na classe, mas fiquei pensando se isso pode ser feito a partir do argumento passado para o argumento do modelo.
decltype
, porque, ao pegar o título literalmente, você pode simplesmente escreverFoo<int*&>