2012-05-21 40 views

Trả lời

2

Đ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
0

Đó 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 
}; 
Các vấn đề liên quan