2010-05-05 36 views

Trả lời

7

Từ Variadic Templates (Revision 3) (N2080=06-0150), trang 6:

Mặc dù không thực sự cần thiết (chúng tôi có thể thực hiện count mà không cần tính năng này), kiểm tra chiều dài của một gói tham số là một hoạt động phổ biến mà xứng đáng với cú pháp đơn giản. Hơn nữa, hoạt động này có thể trở nên cần thiết cho các lý do kiểm tra kiểu khi các mẫu variadic được kết hợp với các khái niệm; xem Phần 3.3.

(Phần 3.3 nói về khái niệm đó là không thích hợp ngay bây giờ.)

+1

'sizeof ... 'cũng có thể được áp dụng như nhau cho mẫu và tham số chức năng gói. Vì vậy, 'sizeof ... (T)' và 'sizeof ... (t)' hoạt động tốt như nhau. Một giải pháp dựa trên thư viện sẽ hoạt động với các gói tham số mẫu hoặc chức năng nhưng không phải với cả hai, tôi tin. Bởi vì một mở rộng tạo ra một chuỗi các kiểu, và việc mở rộng khác tạo ra một chuỗi các biểu thức. Có thể viết nó như là 'template struct count; 'và sau đó truyền gói như' count 'có thể hoạt động. Vì 'sizeof' có thể xử lý cả hai kiểu và biểu thức có vẻ hoạt động, nhưng rõ ràng là xấu hơn :) –

4

sizeof... chỉ là đường, tôi nghĩ vậy.

sizeof thực sự là cốt lõi để các ngôn ngữ như là ..., và mặc dù một hàm countof có thể tồn tại, chúng tôi đã có sizeof... reserved vì vậy chúng tôi cũng có thể làm cho nó thuận tiện để lấy số liệu như vậy.

Ngược lại, nếu sizeof... không được đặt trước, ý tưởng thêm một điều như vậy có thể đã thất bại vì từ khóa mới có xu hướng bị cau mày. (Càng ít càng tốt.)

Các vấn đề liên quan