Do sau đơn giản struct
variadic mẫu nhà xây dựng ưu tiên
template <typename T>
struct A
{
A(T a) {}
template <typename ... Ts>
A(T a, Ts ... more) {}
};
int main()
{
A<int> a(1);
}
đảm bảo rằng A(T a)
sẽ được gọi thay vì mẫu constructor variadic là gì, và tại sao?
14.8.2.4 là về so sánh hai mẫu chức năng để xem đó là chuyên biệt hơn. Nhưng một trong những hàm ứng viên trong ví dụ này không phải là một mẫu chức năng nào cả. – aschepler
@aschepler Bạn đang nói rằng trình biên dịch không cần phải đạt được điều này, bởi vì có một hàm không phải mẫu, đó là một kết hợp hoàn hảo có nghĩa là nó thậm chí không cần phải bắt đầu độ phân giải mẫu. Tôi đồng ý. Sẽ có một phần khác bao gồm điều này. –