2012-09-02 18 views
5

क्या सी ++ 11 मानक निर्दिष्ट करता है कि numeric_limits<T>::min और max को लगातार-अभिव्यक्ति होना चाहिए जिसका उपयोग टेम्पलेट्स या static_assert में किया जा सकता है?संख्यात्मक_limits न्यूनतम/अधिकतम constexpr हैं?

अधिक आम तौर पर, मानक के अनुसार निरंतर अभिव्यक्ति वाले कार्यों की सूची कैसे प्राप्त करें?

+0

नए कीवर्ड 'constexpr' के पीछे मुख्य प्रेरणा संख्यात्मक_limits निरंतर अभिव्यक्तियों में सामान बनाना था। –

उत्तर

9

दरअसल मानक (या मेरे नवीनतम काम मसौदा) अध्याय में std::numeric_limits के सभी सदस्यों को सूचीबद्ध 18.3.2.3 [numeric.limits] constexpr रूप (यह किसी भी अच्छे काम नहीं चलेगा वास्तव में यहाँ उन परिभाषाओं उद्धृत करने के लिए), के लिए सामान्य टेम्पलेट संस्करण के साथ-साथ सभी अंतर्निहित विशेषज्ञता (18.3.2.7 [numeric.special])। तो हां, उन्हें निरंतर अभिव्यक्तियों की गारंटी दी जाती है (कार्यान्वयन के अनुरूप जो वास्तव में वास्तव में constexpr का समर्थन करते हैं)।

आपके दूसरे, अधिक सामान्य प्रश्न के रूप में, मैं आपको केवल सी ++ मानक के संदर्भ में इतना मदद नहीं कर सकता, जिसका नवीनतम मसौदा, जो वास्तविक मानक से वास्तव में भिन्न नहीं है, मुफ्त में उपलब्ध है। या आप अधिक सुविधाजनक लेकिन कम बाध्यकारी cppreference.com देख सकते हैं।

+2

प्रभावित लोगों के लिए, विजुअल स्टूडियो 2013 सीटीपी नवंबर 2013 * कम * कम से कम नहीं() और अधिकतम() के लिए constexpr numeric_limits है। –

+0

@EmilyL। खैर, इसमें 'constexpr' नहीं है, है ना? –

+0

यह आंशिक रूप से ... सदस्य कार्यों के लिए "अभी तक लागू नहीं किया गया" है। http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-69/0638.Updated-Conformance-Map.png –

संबंधित मुद्दे