Reading C++ Templates: The Complete Guide và nó nóiTại sao các mẫu không thể được khai báo trong một hàm?
Lưu ý rằng các mẫu không thể được khai báo trong một chức năng
Nó không đưa ra lời giải thích và/hoặc tham chiếu chéo với bất kỳ chương khác trong cuốn sách hoặc tài nguyên bên ngoài.
Ai đó có thể giúp giải thích điều này. Có lẽ nó được giải thích sau trong cuốn sách nhưng chưa có. Nếu được giải thích trước đó, tôi phải bỏ lỡ nó.
Ví dụ:
int main()
{
class DummyClass // This compiles ok
{
int object;
};
template <typename T> // compile error "expected primary-expression before "template""
class DummyTemplate
{
T object;
};
return 0;
}
Tôi không hiểu được thông báo lỗi từ gcc một trong hai. Các thông báo lỗi nói:
expected primary-expression before "template"
Bạn không thể khai báo lớp học mới, đó chỉ là cách nó là, tôi đoán. –
Có một số câu trả lời cơ bản nói "bạn không thể vì bạn không thể". Có ai biết liệu có lý do chính đáng để ngăn chặn việc này không? –
Đối số mẫu phải có liên kết bên ngoài. Về lý do tại sao đây là một điều cần thiết có một số gợi ý được cung cấp bởi Greg Comeau trong clC++ này. Thảo luận được kiểm duyệt @ http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/f822a008746d1e68/2e9e48a43743e9e1 ? lnk = gst & q = lý do tại sao + local + templates # 2e9e48a43743e9e1 – Abhay