Gibt es eine Möglichkeit, eine Referenz als Argument an ein Argument für den Vorlagentypnamen zu übergeben? Ich meine dies, anstatt beispielsweise ein int zu übergeben, um einen Verweis auf ein int zu übergeben.
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
}
Ich weiß, dass ich das 'ptr'-Mitglied als Referenz auf einen Zeiger festlegen kann, indem ich es in der Klasse als T & bezeichne, aber ich habe mich gefragt, ob dies anhand eines Arguments möglich ist, das an das Vorlagenargument übergeben wird.
decltype, denn wenn Sie den Titel wörtlich nehmen, können Sie einfach schreibenFoo<int*&>