मैं क्या समझ से, एक constexpr समारोह पूरे मूल्यांकन संकलन समय पर किया जा सकता है, तो या नहीं पर निर्भर करता है, संकलन समय के साथ-साथ कार्यावधि में क्रियान्वित किया जा सकता।मैं एक constexpr फ़ंक्शन में रनटाइम जोर कैसे दे सकता हूं?
हालांकि, आप इस समारोह को ओवरलोड नहीं कर सकते एक क्रम है और एक संकलन समय समकक्ष है।
तो मेरे सवाल है, मैं एक क्रम दर्शाते हैं उनमें कैसे डाल सुनिश्चित करना है कि क्रम समारोह के निष्पादन मेरी static_assert के साथ वैध पैरामीटर पारित हो जाता है कर सकते हैं?
मैं भी कर दिया है:
एक लैम्ब्डा अभिव्यक्ति है कि एक अपवाद प्रकार के निर्माता को इस बात पर ज़ोर दर्रा पता चला है कि आप सूची सूची में सीधे जोर दे सकते हैं। 'constexpr bool in_range (int val, int min, int max) {वापसी (जोर दें (न्यूनतम <= अधिकतम), न्यूनतम <= val && val <= max); } 'मूल रूप से, आप इसे बनाने के लिए इतना है कि यह गैर constexpr कॉल करने के लिए करता है, तो असफलता पर एक constexpr संदर्भ में इस्तेमाल कभी नहीं प्राप्त कर सकते हैं। यह काम करता है क्योंकि, जोर एक टर्नरी अभिव्यक्ति के लिए एक मैक्रो है, जो विफलता पर अंतर्निहित गैर-कॉन्स्टेक्सर फ़ंक्शन को कॉल करने का मूल्यांकन करता है। – Adrian
@ एड्रियन दिलचस्प है कि [कॉमा ऑपरेटर को केवल सी ++ 11 में निरंतर अभिव्यक्तियों में अनुमति दी गई थी] (http://stackoverflow.com/q/27324573/1708801)। –
@ एड्रियन हालांकि यह पोर्टेबल नहीं होगा क्योंकि यह 'assert' के कार्यान्वयन विवरण पर निर्भर करता है जो मानक द्वारा कवर नहीं है। –