Nói cách khác khi chức năng tuyên bố như thế này với 'T' là một số loại-alias:Mục đích của hàm chỉ với số tham số không xác định là gì?
T (...)
sẽ bao giờ hữu ích?
Nếu bạn không biết tuyên bố như vậy chỉ định một hàm có số tham số không xác định. Nó được cho phép bởi tiêu chuẩn C++ nhưng nó không cung cấp cho chúng ta một cách tiêu chuẩn để truy cập các đối số đã qua. Có thư viện <cstdarg>
nhưng nó yêu cầu đặt tên tham số trước dấu ba chấm để hoạt động. Nó giống như thế này (với một kiểu bí danh tên 'T1'):
T (T1, ...)
thường T1
là loại int
và sepcifies số lượng đối số variadic.
Tuy nhiên thực tế là dấu ba chấm có thể là tham số hàm duy nhất có nghĩa là cấu trúc như vậy có một số mục đích và tôi là curios nó là gì?
Một ví dụ thực tế của chức năng như vậy sẽ giống như thế này:
void func(...)
{
}
Tôi thực sự đã sử dụng điều này khá nhiều. Nó rất hữu ích trong việc lập trình mẫu meta với SFINAE do các quy tắc quá tải có liên quan đến – bolov
Có thể bạn muốn tạo ra một chức năng lấy bất kỳ đối số nào, nhưng bạn thực sự không quan tâm hoặc sử dụng các đối số? –
http://en.wikipedia.org/wiki/Substitution_failure_is_not_an_error (ví dụ: xem has_typedef_foobar) hoặc http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/SFINAE – bolov