Tôi đang đọc một số mã nguồn trong stl_construct.h, Trong hầu hết các trường hợp, nó có sth trong <> và tôi thấy một số dòng chỉ có "template<> ...
". đây là gì?mẫu <> (không có bất kỳ lớp T nào trong <>) có nghĩa là gì?
Trả lời
Điều này có nghĩa là những gì sau đây là template specialization.
Đoán, tôi hoàn toàn hiểu sai câu hỏi và trả lời câu hỏi không được hỏi.
Vì vậy, ở đây tôi trả lời câu hỏi được hỏi:
Đây là một Explicit Specialization với danh sách đối số mẫu trống.
Khi bạn khởi tạo một mẫu với một bộ đối số mẫu nhất định trình biên dịch tạo ra một định nghĩa mới dựa trên các đối số mẫu đó. Nhưng có một cơ sở để ghi đè hành vi này của việc tạo ra định nghĩa. Thay vì trình biên dịch tạo ra định nghĩa Chúng ta có thể chỉ định định nghĩa trình biên dịch nên sử dụng cho một tập các đối số mẫu đã cho. Điều này được gọi là chuyên môn rõ ràng.
Tiền tố template<>
cho biết rằng khai báo mẫu sau không có tham số mẫu.
chuyên môn Explicit có thể được áp dụng cho:
- Function hoặc lớp mẫu
- Member chức năng của một lớp mẫu
- thành viên dữ liệu tĩnh của một lớp mẫu
- thành viên lớp của một lớp mẫu
- Mẫu chức năng thành viên của mẫu lớp &
- Thành viên lớp học te bản mẫu của một lớp học
Đó là một chuyên môn về mẫu mà tất cả thông số mẫu được chỉ định đầy đủ và sẽ không còn tham số nào trong <>
.
Ví dụ:
template<class A, class B> // base template
struct Something
{
// do something here
};
template<class A> // specialize for B = int
struct Something<A, int>
{
// do something different here
};
template<> // specialize both parameters
struct Something<double, int>
{
// do something here too
};
- 1. những gì <T> có nghĩa là trong <T> void say()
- 2. Mẫu <unsigned int N> có nghĩa là gì?
- 3. Triển khai IEquatable <T> khi T có thể là IEnumerable <T>
- 4. Bản đồ <?, ?> có nghĩa là gì trong Java?
- 5. <> có nghĩa là gì trong Python
- 6. Sự khác biệt giữa "mẫu <class T>" và "mẫu <typename T>" là gì?
- 7. "<<" and ">>" có nghĩa là gì trong C++ cho cout/cin?
- 8. gì <c-r> = có nghĩa là trong Vim
- 9. `Nullable <T> là gì? '?
- 10. F # - Mảng <'T> là gì?
- 11. Có cái gì đó như DbSet <T> .RemoveWhere (Predicate <T>)
- 12. Biểu tượng <> có nghĩa là gì trong MSIL?
- 13. IEnumerable <T> VS IList <T> VS IQueryable <T>
- 14. Tại sao IList <T> không có phương thức Chèn lấy IEnumerable <T>?
- 15. Sự khác nhau giữa HashSet <T> và Danh sách <T> là gì?
- 16. <?> vs <T>
- 17. Phương pháp đối diện của bất kỳ <T>
- 18. Java- Ý nghĩa của <T mở rộng so sánh <T>>?
- 19. "<! DOCTYPE html>" Có nghĩa là gì?
- 20. SortedSet <T> vs HashSet <T>
- 21. Có tương đương với <? extends T>, <? super T> bằng C++ không?
- 22. IList <T> .FindIndex (Int32, Predicate <T>)
- 23. Từ điển <string, /> có nghĩa là gì?
- 24. Làm thế nào để có được IEnumerable <T> từ Danh sách <T>?
- 25. Generics <?> thực sự có nghĩa là gì?
- 26. <init> và (Native Method) có nghĩa là gì?
- 27. Java: Khai báo một Bản đồ với hai loại generics liên quan Các loại (<T> Bản đồ <Lớp <? Mở rộng ClassA <T>>, Lớp <? Mở rộng ClassB <T> >>)
- 28. Cú pháp <T kéo dài Lớp <T>> trong Java
- 29. Tại sao không có SortedList <T> trong .NET?
- 30. Làm một vị tái sử dụng cho EntitySet <T>, IQueryable <T> và IEnumerable <T>