参照を引数としてテンプレートのtypename引数に渡す方法はありますか?たとえば、intへの参照を渡すために、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
}
「ptr」メンバーをクラスでT&にすることでポインターへの参照にできることはわかっていますが、これはテンプレート引数に渡された引数から実行できるかどうか疑問に思っていました。
decltype
タイトルをそのまま取ることができるので、にとどまりたいと思いますFoo<int*&>