Existe-t-il un moyen de passer une référence en tant qu'argument à un argument de nom de type de modèle? Je veux dire donc au lieu de passer un int, par exemple, pour passer une référence à 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
}
Je sais que je peux faire du membre 'ptr' une référence à un pointeur en le faisant T & dans la classe, mais je me demandais si cela pouvait être fait à partir d'un argument passé à l'argument modèle.
decltype
, car en prenant le titre à la lettre, vous pourriez simplement écrireFoo<int*&>