में अनुबंध क्या हैं I बी स्ट्रॉस्ट्रप द्वारा Thoughts about C++17 में अनुबंधों के बारे में पढ़ रहे थे और उनके बारे में बात करने वाली एक छोटी प्रस्तुति में सहायता की लेकिन मुझे यकीन नहीं है कि मैंने उन्हें वास्तव में समझा है।सी ++ 17
तो मैं एक कुछ पूछताछ की है और अगर यह उन्हें कुछ उदाहरण के साथ वर्णन करने के लिए संभव है:
ठेके सिर्फ क्लासिक
assert()
का एक बेहतर प्रतिस्थापन कर रहे हैं और वे एक साथ इस्तेमाल किया जाना चाहिए? सॉफ़्टवेयर देव के लिए सरल शब्दों में वास्तव में कौन से अनुबंध किए जाते हैं?क्या अनुबंधों पर असर पड़ता है कि हम अपवादों को कैसे संभालेंगे? यदि हां, तो हमें अपवादों और अनुबंधों का उपयोग कैसे करना चाहिए?
अनुबंधों का उपयोग निष्पादन समय पर ओवरहेड का अर्थ होगा? क्या हम उन्हें रिलीज कोड पर निष्क्रिय करने की अनुमति देंगे? proposal N4415 से
संपादित करें:
एक वेक्टर वर्ग का अनुक्रमण ऑपरेटर के एक पूर्व शर्त अनुबंध लिखा जा सकता है:
T& operator[](size_t i) [[expects: i < size()]];
इसी तरह, पर एक के बाद हालत अनुबंध एक ArrayView वर्ग के एक निर्माता के रूप में व्यक्त किया जा सकता है:
ArrayView(const vector<T>& v) [[ensures: data() == v.data()]];
वे डीबग चेक की तरह हैं जिन्हें आप कंपाइलर को दिए गए चेकिंग के स्तर के आधार पर सक्षम या अक्षम कर सकते हैं। अक्षम स्तर के लिए किसी भी चेक को रनटाइम लागत नहीं होगी। आप उनके लिए प्रस्ताव क्यों नहीं पढ़ते? – CoffeeandCode
@ बेसिलस्टारनकेविच इस सवाल को प्रोग्रामर के लिए एक खराब फिट है - इसे तुरंत नीचे बंद कर दिया जाएगा और वहां बंद कर दिया जाएगा, http://meta.programmers.stackexchange.com/questions/6483/why-was-my-question-closed- या नीचे-वोट/64 9 0 # 64 9 0 अनुशंसित पढ़ने: ** [प्रोग्रामर.एसई पर क्या चल रहा है? स्टैक ओवरफ़्लो के लिए एक गाइड] (http://meta.programmers.stackexchange.com/q/7182/31260) ** – gnat