Tôi muốn để có thể viết một cái gì đó dọc theo những dòng:Có hợp pháp khi sử dụng các mẫu variadic trong quá tải toán tử không?
struct bar {};
template <typename ... Args>
bar operator+(bar, Args ...)
{}
tôi chỉ kiểm tra với kêu vang/gcc và các nhà điều hành quá tải được nhặt cả bởi biểu thức nhị phân (a+b
) và biểu thức unary (+a
), như tôi mong đợi. Tuy nhiên các toán tử bị hạn chế nhiều hơn các hàm bình thường, theo nghĩa - ví dụ - bạn không thể quá tải operator+()
với ba đối số.
Việc sử dụng trên hợp pháp và di động phải không?
EDIT Để đưa ra một chút ngữ cảnh, tôi rõ ràng không mong đợi để có thể xác định các toán tử variadic hoặc bất kỳ thứ gì sắp xếp. Lý do tôi quan tâm đến điều này là cho một hack xấu xí: Tôi muốn làm cho một số nhà khai thác variadic để tôi có thể "ghi đè" chúng với triển khai non-variadic khác. Vì các mẫu variadic được coi là ít chuyên biệt hơn các mẫu không phải là variadic trong các quy tắc nạp chồng mẫu chức năng, tôi có thể ghi đè lên toán tử variadic bằng một toán tử không phải là variadic. Có nó khá ghê tởm :)
Cảm ơn bạn đã trả lời, tôi đã thêm một chút ngữ cảnh vào câu hỏi gốc. – bluescarni
@bluescarni Yeah, được rồi. – Columbo