2012-09-02 49 views
5

Chuẩn C++ 11 chỉ định rằng numeric_limits<T>::minmax phải là biểu thức không đổi có thể được sử dụng trong các mẫu hoặc static_assert?Có phải số_lần tối thiểu/max constexpr không?

Thông thường, làm thế nào để tìm danh sách các hàm được biểu hiện liên tục theo tiêu chuẩn?

+0

Động lực chính đằng sau từ khóa mới 'constexpr' là làm cho nội dung trong các biểu thức hằng số numeric_limits. –

Trả lời

9

Trên thực tế tiêu chuẩn (hoặc dự thảo làm việc mới nhất của tôi) liệt kê tất cả các thành viên của std::numeric_limits trong chương 18.3.2.3 [numeric.limits] như constexpr (nó sẽ không làm bất cứ tốt để thực sự trích dẫn những định nghĩa ở đây), cho phiên bản được tạo khuôn mẫu chung cũng như tất cả các chuyên ngành được xây dựng (18.3.2.7 [số.special]). Vì vậy, có, chúng được đảm bảo là các biểu thức không đổi (đối với việc triển khai phù hợp cũng thực sự hỗ trợ constexpr, tất nhiên). Với câu hỏi thứ hai, tổng quát hơn, tôi không thể giúp bạn nhiều, ngoại trừ việc chỉ giới thiệu bạn đến bản thân tiêu chuẩn C++, bản nháp mới nhất của nó, không có gì khác biệt so với tiêu chuẩn thực tế, có sẵn miễn phí. Các tính năng chính: Hoặc bạn có thể xem xét thuận tiện hơn nhưng ít ràng buộc hơn cppreference.com.

+2

Đối với những người bị ảnh hưởng, Visual Studio 2013 CTP tháng 11 năm 2013 không * không * có constexpr numeric_limits, ít nhất là không cho min() và max(). –

+0

@EmilyL. Vâng, nó không có 'constexpr' ở tất cả, phải không? –

+0

Nó, một phần ... nó "chưa được triển khai" cho các chức năng thành viên. http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-69/0638.Updated-Conformance-Map.png –

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