Có cách nào để chuyển tham chiếu làm đối số cho đối số tên kiểu mẫu không? Tôi có nghĩa là như vậy thay vì truyền một int, ví dụ, để chuyển một tham chiếu đến một 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
}
Tôi biết tôi có thể làm cho thành viên 'ptr' trở thành một tham chiếu đến một con trỏ bằng cách làm cho nó T & trong lớp, nhưng tôi đã tự hỏi liệu điều này có thể được thực hiện từ đối số được truyền cho đối số mẫu không.
decltype
, bởi vì lấy tiêu đề theo nghĩa đen mà bạn có thể viết đơn giảnFoo<int*&>