Câu hỏi được gắn thẻ «template-specialization»

4
Tại sao mẫu hàm không thể chuyên biệt một phần?
Tôi biết đặc tả ngôn ngữ cấm chuyên môn hóa từng phần của mẫu hàm. Tôi muốn biết lý do tại sao nó cấm nó? Chúng không hữu ích? template<typename T, typename U> void f() {} //allowed! template<> void f<int, char>() {} //allowed! template<typename T> void f<char, T>() {} //not …


1
Clang có đúng để từ chối mã trong đó lớp lồng của mẫu lớp chỉ được xác định thông qua các chuyên ngành không?
Cho mẫu lớp sau: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; chúng tôi xác định Innerriêng cho từng chuyên ngành của Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; và sau đó xác định hàm thành viên fmột lần cho tất cả các chuyên …




2
Tại sao một chuyên môn mẫu một phần trên một lớp mẫu phù hợp mơ hồ với một chuyên môn một phần khác mà không phù hợp với mẫu?
Câu hỏi có thể quá khó để mô tả trong câu trong tiêu đề, nhưng đây là một ví dụ tối thiểu: #include <iostream> #include <type_traits> template <class T, class U, class Enabler> struct my_trait : std::false_type {}; template <class T, class U> struct my_trait<T, U, std::enable_if_t<std::is_same<T, U>::value>> : std::true_type …
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.