myTemplateTemplate mong đợi tham số mẫu thứ hai là mẫu có một đối số. myDefaultTemplate là một mẫu có hai đối số và đối số thứ hai có kiểu int mặc định.Tại sao mẫu với đối số mẫu mặc định không thể được sử dụng làm mẫu có đối số mẫu ít hơn trong Tham số mẫu mẫu
Trong VS2008, tôi nhận được lỗi biên dịch: danh sách tham số mẫu cho lớp mẫu 'myDefaultTemplate' không phù hợp với danh sách tham số mẫu cho mẫu tham số 'TT'
Vì vậy, tại sao myDefaultTemplate có thể không được sử dụng làm mẫu với chỉ một đối số? Có bất kỳ tác động tiêu cực nào nếu trình biên dịch C++ hỗ trợ nó không?
template
<typename T1, typename T2 = int>
class
myDefaultTemplate{
T1 a;
T2 b;
};
template
<typename T1, template<typename T2> class TT>
class
myTemplateTemplate{
T1 a;
TT<T1> b;
};
int main(int argc, char* argv[]){
myTemplateTemplate<int, myDefaultTemplate> bar; //error here:
return 0;
}
Bạn sẽ nhận được huy hiệu cho "Câu hỏi sử dụng từ 'mẫu' nhiều lần nhất" :) – Praetorian