Năm 2003 - vâng, - Vandervoorde và Josuttis viết này trong cuốn sách của họ "C++ Mẫu" (p 40).:Tại sao đôi không được phép làm thông số mẫu không phải kiểu?
Không có khả năng sử dụng literals dấu phẩy động (và floating- liên tục đơn giản biểu thức điểm) dưới dạng đối số mẫu có lý do lịch sử. Vì không có những thách thức kỹ thuật nghiêm trọng, điều này có thể được hỗ trợ trong các phiên bản tương lai của C++.
Nhưng điều này vẫn không hoạt động, ngay cả trong môi trường C++ 11:
template<double D> //error
void foo() {}
Tại sao đây không phải thêm vào?
Cho rằng bình đẳng dấu chấm động là một trơn khái niệm, tôi không chắc làm thế nào họ có thể nói "không có những thách thức kỹ thuật nghiêm trọng." Tôi thà nghĩ rằng điều này sẽ đầy nguy hiểm –
@ ErnestFriedman-Hill: Điều đó có vẻ giống như cơ sở của một câu trả lời cho tôi. –
Chúng tôi đối phó với các vấn đề bình đẳng trong mã thời gian chạy thường xuyên, mặc dù. Những lời khuyên tương tự sẽ áp dụng cho việc sử dụng chúng trong các mẫu ... Tôi thực sự không thấy lý do chính đáng nào để giữ chúng trong thời gian chạy. –