Hãy xem xét một mẫu lớp C với một chính sách thiết lập thông qua mẫu template tham số và hai định nghĩa chính sách:Template mẫu tham số với sai số của các tham số mẫu
template<class T> struct PolicyOne { };
template<class T, int U, int V> struct PolicyTwo { };
template<class T, template<class> class POLICY> struct C { POLICY<T> policy; };
void f()
{
C<int, PolicyOne> mc1;
C<int, PolicyTwo<1, 2> > mc2; // doesn't work this way
}
PolicyTwo
không làm việc vì sai số lập luận mẫu. Có cách nào để sử dụng tham số mẫu PolicyTwo
làm POLICY
nếu bạn chỉ định loại cho thông số mẫu bổ sung không?
Tôi đang sử dụng C++ 03, vì vậy khai báo bí danh không khả dụng. Tôi biết về số this question, nhưng tôi không thấy giải pháp cho vấn đề của mình ở đó.
Giải pháp này không làm việc cho tôi bởi vì nó không cho phép tôi để khai báo một giá trị mặc định cho 'POLICY' hoạt động độc lập với' T'. –
@Gabriel Schreiber Chính sách của bạn chỉ đơn giản là có thể chọn bỏ qua tham số kiểu mẫu của nó (trong khi vẫn lộ loại của nó), và sau đó nó hoạt động độc lập với 'T'. –