संकल्पना (सामान्य प्रोग्रामिंग): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[सामान्य प्रोग्रामिंग]] में, अवधारणा प्रकार पर समर्थित संचालन का विवरण है, जिसमें वाक्यविन्यास और शब्दार्थ शामिल हैं। इस प्रकार, अवधारणाएँ [[अमूर्त प्रकार]]ों से संबंधित होती हैं लेकिन अवधारणाओं को उपप्रकार संबंध की आवश्यकता नहीं होती है।
[[सामान्य प्रोग्रामिंग|'''सामान्य प्रोग्रामिंग''']] में, अवधारणा ऐसा समर्थित संचालन का विवरण है, जिसमें वाक्यविन्यास और शब्दार्थ सम्मिलित हैं। इस प्रकार, अवधारणाएँ [[अमूर्त प्रकार|अमूर्त प्रकारों]] से संबंधित होती हैं किंतु अवधारणाओं को उपप्रकार संबंध की आवश्यकता नहीं होती है।


==भाषा प्रयोग==
==लैंग्वेज प्रयोग==
यह शब्द [[मानक टेम्पलेट लाइब्रेरी]] के लिए 1998 से ही प्रयोग में था,<ref>Austern, M.H. ''Generic programming and the STL: using and extending the C++ Standard Template Library''. 1998. pp 17–18</ref> क्योंकि यह उन पहले पुस्तकालयों में से था जो बड़े पैमाने पर टेम्पलेट्स का उपयोग करता था। अवधारणा शब्द (और इसकी लोकप्रियता) का श्रेय [[अलेक्जेंडर स्टेपानोव]] को दिया जाता है,<ref>[https://isocpp.org/blog/2016/02/a-bit-of-background-for-concepts-and-cpp17-bjarne-stroustrup a bit of background for concepts and C++17—Bjarne Stroustrup], by Bjarne Stroustrup | Feb 26, 2016</ref><ref>[https://isocpp.org/blog/2016/01/alex-stepanov Alex Stepanov], by Bjarne Stroustrup | Jan 21, 2016</ref> एसटीएल के प्राथमिक डिजाइनर।
यह शब्द [[मानक टेम्पलेट लाइब्रेरी]] के लिए 1998 से ही प्रयोग में था,<ref>Austern, M.H. ''Generic programming and the STL: using and extending the C++ Standard Template Library''. 1998. pp 17–18</ref> क्योंकि यह उन पहले लाइब्रेरी में से था जो बड़े पैमाने पर टेम्पलेट्स का उपयोग करता था। अवधारणा शब्द (और इसकी लोकप्रियता) का श्रेय [[अलेक्जेंडर स्टेपानोव]] को दिया जाता है,<ref>[https://isocpp.org/blog/2016/02/a-bit-of-background-for-concepts-and-cpp17-bjarne-stroustrup a bit of background for concepts and C++17—Bjarne Stroustrup], by Bjarne Stroustrup | Feb 26, 2016</ref><ref>[https://isocpp.org/blog/2016/01/alex-stepanov Alex Stepanov], by Bjarne Stroustrup | Jan 21, 2016</ref> जो एसटीएल के प्राथमिक डिजाइनर थे।


C++ 1998 मानक में, कॉन्सेप्ट शब्द को विशेष प्रकार की आवश्यकताओं का सरल विवरण देने के लिए पेश किया गया था, जो आमतौर पर  टेम्पलेट पैरामीटर होता है। इसे भाषा में स्पष्ट रूप से एन्कोड नहीं किया गया था - अवधारणा केवल इस बात से व्यक्त की गई थी कि उस प्रकार की वस्तुओं पर किस प्रकार के संचालन का प्रयास किया जाता है और क्या काम करने की उम्मीद की जाती है (अर्थात, सही ढंग से संकलित करना)। [[C++11]] में स्पष्ट भाषा सुविधा के रूप में कॉन्सेप्ट्स (C++) को जोड़ने का प्रस्ताव था, हालांकि इसे तैयार नहीं होने के कारण अस्वीकार कर दिया गया था। [[C++20]] ने अंततः अवधारणा के परिष्कृत डिज़ाइन को स्वीकार कर लिया।
सी++ 1998 मानक में, कॉन्सेप्ट शब्द को विशेष प्रकार की आवश्यकताओं का सरल विवरण देने के लिए प्रस्तुत किया गया था, जो सामान्यतः टेम्पलेट पैरामीटर होता है। इसे लैंग्वेज में स्पष्ट रूप से एन्कोड नहीं किया गया था अवधारणा केवल इस सम्बन्ध में व्यक्त की गई थी कि उस प्रकार की वस्तुओं पर किस प्रकार के संचालन का प्रयास किया जाता है और क्या कार्य करने की आशा की जाती है (अर्थात, उत्तम रूप से संकलित करना)। [[C++11|सी++11]] में स्पष्ट लैंग्वेज सुविधा के रूप में कॉन्सेप्ट्स (सी++) को जोड़ने का प्रस्ताव था, चूँकि इसे तैयार नहीं होने के कारण अस्वीकार कर दिया गया था। [[C++20|सी++20]] ने अंततः अवधारणा के परिष्कृत डिज़ाइन को स्वीकार कर लिया।


चूंकि [[जावा (प्रोग्रामिंग भाषा)]] और सी शार्प (प्रोग्रामिंग भाषा)|सी# में जेनेरिक में [[सी++]] के [[टेम्पलेट (सी++)]]सी++) से कुछ समानताएं हैं, इसलिए वहां अवधारणाओं की भूमिका [[ प्रोटोकॉल (वस्तु-उन्मुख प्रोग्रामिंग) ]] द्वारा निभाई जाती है। हालाँकि, अवधारणाओं और इंटरफेस के बीच  महत्वपूर्ण अंतर है: जब किसी विशेष इंटरफ़ेस को लागू करने के लिए टेम्पलेट पैरामीटर की आवश्यकता होती है, तो मिलान प्रकार केवल वर्ग हो सकता है जो उस इंटरफ़ेस को (स्पष्ट रूप से) लागू करता है। अवधारणाएँ अधिक लचीलापन लाती हैं क्योंकि उन्हें दो तरीकों से संतुष्ट किया जा सकता है:
चूंकि [[जावा (प्रोग्रामिंग भाषा)|जावा (प्रोग्रामिंग लैंग्वेज)]] और सी में जेनेरिक में [[सी++]] के [[टेम्पलेट (सी++)]]सी++) से कुछ समानताएं हैं, इसलिए वहां अवधारणाओं की भूमिका [[ प्रोटोकॉल (वस्तु-उन्मुख प्रोग्रामिंग) |प्रोटोकॉल (वस्तु-उन्मुख प्रोग्रामिंग)]] द्वारा निभाई जाती है। चूँकि, अवधारणाओं और इंटरफेस के मध्य महत्वपूर्ण अंतर है: जब किसी विशेष इंटरफ़ेस को प्रारम्भ करने के लिए टेम्पलेट पैरामीटर की आवश्यकता होती है, तो मैचिंग टाइप केवल क्लासेज हो सकता है जो उस इंटरफ़ेस को (स्पष्ट रूप से) प्रारम्भ करता है। अवधारणाएँ अधिक फ्लेक्स्बिल हैं क्योंकि उन्हें दो विधियों से संतुष्ट किया जा सकता है:
* अवधारणा मानचित्र का उपयोग करके स्पष्ट रूप से संतुष्ट के रूप में परिभाषित किया गया है (इंटरफ़ेस के विपरीत, प्रकार को अलग से परिभाषित किया गया है)
* अवधारणा मानचित्र का उपयोग करके स्पष्ट रूप से संतुष्ट के रूप में परिभाषित किया गया है (इंटरफ़ेस के विपरीत, प्रकार को भिन्न से परिभाषित किया गया है)
* ऑटो अवधारणाओं के लिए स्पष्ट रूप से परिभाषित, जिसका उपयोग अंतर्निहित प्रकारों और अन्य प्रकारों के लिए भी किया जा सकता है जो इस उपयोग के लिए पूर्वनिर्धारित नहीं थे
* ऑटो अवधारणाओं के लिए स्पष्ट रूप से परिभाषित, जिसका उपयोग अंतर्निहित प्रकारों और अन्य प्रकारों के लिए भी किया जा सकता है जो इस उपयोग के लिए पूर्वनिर्धारित नहीं थे।


लेकिन C# भाषा में कई संरचनाएं हैं जहां उपयोग किए गए प्रकार को परिभाषित इंटरफ़ेस को स्पष्ट रूप से लागू करने की आवश्यकता नहीं है, इसे केवल संबंधित पैटर्न से मेल खाना आवश्यक है (हालांकि, इन पैटर्न को अवधारणाएं नहीं कहा जाता है)। जैसे फ़ोरैच लूप|<code>foreach</code>पुनरावृत्ति कथन पुनरावृत्त वस्तु को किसी भी प्रकार का होने की अनुमति देता है, जब तक कि यह उपयुक्त कार्यान्वयन करता है <code>GetEnumerator</code> तरीका।<ref>[https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/statements#the-foreach-statement ''C# 6.0 draft specification'', ''The foreach statement'']</ref> (तुलना करें <code>using</code> वह कथन जिसे कार्यान्वित करने के लिए संसाधन की आवश्यकता होती है <code>System.IDisposable</code> इंटरफेस।<ref>[https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/statements#the-using-statement ''C# 6.0 draft specification'', ''The using statement'']</ref>)
किंतु सी लैंग्वेज में कई संरचनाएं हैं जहां उपयोग किए गए प्रकार को परिभाषित इंटरफ़ेस को स्पष्ट रूप से प्रारम्भ करने की आवश्यकता नहीं है, इसे केवल संबंधित पैटर्न से मैच करना आवश्यक है (चूँकि, इन पैटर्न को अवधारणाएं नहीं कहा जाता है)। जैसे <code>foreach</code> पुनरावृत्ति कथन पुनरावृत्त वस्तु को किसी भी प्रकार की होने की अनुमति देते है, जब तक कि यह उपयुक्त <code>GetEnumerator</code> विधि प्रारंभ करता है।<ref>[https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/statements#the-foreach-statement ''C# 6.0 draft specification'', ''The foreach statement'']</ref> (उपयोग कथन के साथ तुलना करें जिसके लिए <code>System.IDisposable</code> को प्रारंभ करने के लिए संसाधन की आवश्यकता होती है।<ref>[https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/statements#the-using-statement ''C# 6.0 draft specification'', ''The using statement'']</ref>)


[[निम (प्रोग्रामिंग भाषा)]] मनमाने ढंग से संकलन-समय बूलियन विधेय की श्रृंखला के रूप में अवधारणाओं को लागू करता है।<ref>{{Cite web |title=निम प्रायोगिक विशेषताएं|url=https://nim-lang.org/docs/manual_experimental.html#concepts |access-date=2023-06-19 |website=nim-lang.org}}</ref>
[[निम (प्रोग्रामिंग भाषा)|निम (प्रोग्रामिंग लैंग्वेज)]] संकलन-समय बूलियन विधेय की श्रृंखला के रूप में अवधारणाओं को प्रारम्भ करता है।<ref>{{Cite web |title=निम प्रायोगिक विशेषताएं|url=https://nim-lang.org/docs/manual_experimental.html#concepts |access-date=2023-06-19 |website=nim-lang.org}}</ref>
अवधारणाओं के समान कुछ लागू करने वाली अन्य भाषा [[हास्केल (प्रोग्रामिंग भाषा)]] है, जहां फीचर को [[ प्रकार वर्ग ]] कहा जाता है।
 
अवधारणाओं के समान कुछ प्रारम्भ करने वाली अन्य लैंग्वेज [[हास्केल (प्रोग्रामिंग भाषा)|हास्केल (प्रोग्रामिंग लैंग्वेज)]] है, जहां फीचर को [[ प्रकार वर्ग |टाइप क्लासेज]] कहा जाता है।


==उदाहरण==
==उदाहरण==
Line 19: Line 20:
=== कुल ऑर्डर ===
=== कुल ऑर्डर ===


कुल ऑर्डरिंग अवधारणा के शब्दार्थ का वर्णन करती है <code><</code> ऑपरेटर।
कुल ऑर्डरिंग <code><</code> ऑपरेटर के शब्दार्थ का वर्णन करती है। एक प्रकार पूर्ण रूप से तब व्यवस्थित होता है जब <code><</code> द्विआधारी विधेय होता है और निम्नलिखित गुणों को संतुष्ट करता है:<ref>{{cite book |last=Stepanov |first=Alexander |date=2009 |title=प्रोग्रामिंग के तत्व|publisher=Addison-Wesley Professional |page=49 |isbn=9780321635372}}</ref><ref>[https://www.jmeiners.com/efficient-programming-with-components/06_min_max.html#Reviewing-Total-Orderings Total Orderings - Efficient Programming with Components]</ref>
प्रकार पूरी तरह से आदेश दिया जाता है जब <code><</code> द्विआधारी विधेय है और निम्नलिखित गुणों को संतुष्ट करता है:<ref>{{cite book |last=Stepanov |first=Alexander |date=2009 |title=प्रोग्रामिंग के तत्व|publisher=Addison-Wesley Professional |page=49 |isbn=9780321635372}}</ref><ref>[https://www.jmeiners.com/efficient-programming-with-components/06_min_max.html#Reviewing-Total-Orderings Total Orderings - Efficient Programming with Components]</ref>
*एंटी-रिफ्लेक्टिव: <code>!(a < a)</code> किसी भी मान के लिए <code>a</code> है।
*प्रति-प्रतिक्रियाशील: <code>!(a < a)</code> किसी भी मूल्य के लिए <code>a</code>.
* ट्रांजिटिव: यदि <code>a < b</code> और <code>b < c</code> तब <code>a < c</code>  
* सकर्मक: यदि <code>a < b</code> और <code>b < c</code> तब <code>a < c</code>.
* एंटी सिमेट्रिक: यदि <code>a < b</code> तब <code>!(b < a)</code>  
* विरोधी सममिति: यदि <code>a < b</code> तब <code>!(b < a)</code>.
* कुल: यदि <code>a!= b</code> तब <code>a < b</code> या <code>b < a</code> है।
* कुल: यदि <code>a != b</code> तब <code>a < b</code> या <code>b < a</code>.


कई एल्गोरिदम ठीक से काम करने के लिए इन गुणों पर भरोसा करते हैं।
कई एल्गोरिदम उत्तम रूप से कार्य करने के लिए इन गुणों पर आशा करते हैं। उदाहरण के लिए <code>min</code> फ़ंक्शन को पूर्ण रूप से ऑर्डर किए गए प्रकारों पर सुरक्षित रूप से परिभाषित किया जा सकता है:
उदाहरण के लिए <code>min</code> फ़ंक्शन को पूरी तरह से ऑर्डर किए गए प्रकारों पर सुरक्षित रूप से परिभाषित किया जा सकता है:
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
// requires: T satisfies Totally Ordered
// requires: T satisfies Totally Ordered
template <typename T>
template <typename T>
Line 44: Line 43:
'''इटरेटर'''
'''इटरेटर'''


यदि प्रकार <code>I</code> C++ में ट्रिवियल इटरेटर अवधारणा को संतुष्ट करता है, और <code>i</code> प्रकार का है <code>I</code>, निम्नलिखित संगत शब्दार्थ के साथ मान्य अभिव्यक्तियाँ हैं:<ref>[http://www.martinbroadhurst.com/stl/trivial.html Trivial Iterator<!-- Bot generated title -->]</ref>
यदि प्रकार <code>I</code> सी++ में ट्रिवियल इटरेटर अवधारणा को संतुष्ट करता है, और <code>i</code> प्रकार का है <code>I</code>, निम्नलिखित संगत शब्दार्थ के साथ मान्य अभिव्यक्तियाँ हैं:<ref>[http://www.martinbroadhurst.com/stl/trivial.html Trivial Iterator<!-- Bot generated title -->]</ref>
* <code>I i</code> डिफ़ॉल्ट निर्माण.
* <code>I i</code> डिफ़ॉल्ट कंस्ट्रक्शन
* <code>*i</code> किसी प्रकार में परिवर्तनीय होना चाहिए <code>T</code>.
* <code>*i</code> किसी प्रकार <code>T</code> में परिवर्तनीय होना चाहिए।
* <code>i->m</code> यदि मान्य है <code>(*i).m</code> है।
* <code>i->m</code> मान्य है यदि <code>(*i).m</code> है।


==यह भी देखें==
==यह भी देखें==
* प्रोटोकॉल (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)
* प्रोटोकॉल (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)
* अवधारणाएँ (C++)
* अवधारणाएँ (सी++)
* [[इंटरफ़ेस (जावा)]]
* [[इंटरफ़ेस (जावा)]]
* क्लास टाइप करें
* क्लास टाइप करें
Line 61: Line 60:
==बाहरी संबंध==
==बाहरी संबंध==
* [http://www.boost.org/more/generic_programming.html Boost Generic Programming Techniques]
* [http://www.boost.org/more/generic_programming.html Boost Generic Programming Techniques]
* [[Douglas Gregor]], et al. ''[http://www.research.att.com/~bs/oopsla06.pdf Concepts: Linguistic Support for Generic Programming in C++]''
* [[Douglas Gregor]], et al. ''[http://www.research.att.com/~bs/oopsla06.pdf सीoncepts: Linguistic Support for Generic Programming in सी++]''
* [https://www.youtube.com/watch?v=oZhixOWljWI Doug Gregor talk on Concepts at Google] (video)
* [https://www.youtube.com/watch?v=oZhixOWljWI Doug Gregor talk on सीoncepts at Google] (video)
* [http://sms.cs.chalmers.se/publications/papers/2008-WGP.pdf A comparison of C++ concepts and Haskell type classes]
* [http://sms.cs.chalmers.se/publications/papers/2008-WGP.pdf A comparison of सी++ concepts and Haskell type classes]
[[Category: सामान्य प्रोग्रामिंग]]
<!-- with 'class' not of the programming kind -->
<!-- with 'class' not of the programming kind -->


[[ja:コンセプト (C++)]]
[[ja:コンセプト (C++)]]


[[Category: Machine Translated Page]]
[[Category:Created On 25/07/2023]]
[[Category:Created On 25/07/2023]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Templates Vigyan Ready]]
[[Category:सामान्य प्रोग्रामिंग]]

Latest revision as of 13:56, 14 August 2023

सामान्य प्रोग्रामिंग में, अवधारणा ऐसा समर्थित संचालन का विवरण है, जिसमें वाक्यविन्यास और शब्दार्थ सम्मिलित हैं। इस प्रकार, अवधारणाएँ अमूर्त प्रकारों से संबंधित होती हैं किंतु अवधारणाओं को उपप्रकार संबंध की आवश्यकता नहीं होती है।

लैंग्वेज प्रयोग

यह शब्द मानक टेम्पलेट लाइब्रेरी के लिए 1998 से ही प्रयोग में था,[1] क्योंकि यह उन पहले लाइब्रेरी में से था जो बड़े पैमाने पर टेम्पलेट्स का उपयोग करता था। अवधारणा शब्द (और इसकी लोकप्रियता) का श्रेय अलेक्जेंडर स्टेपानोव को दिया जाता है,[2][3] जो एसटीएल के प्राथमिक डिजाइनर थे।

सी++ 1998 मानक में, कॉन्सेप्ट शब्द को विशेष प्रकार की आवश्यकताओं का सरल विवरण देने के लिए प्रस्तुत किया गया था, जो सामान्यतः टेम्पलेट पैरामीटर होता है। इसे लैंग्वेज में स्पष्ट रूप से एन्कोड नहीं किया गया था अवधारणा केवल इस सम्बन्ध में व्यक्त की गई थी कि उस प्रकार की वस्तुओं पर किस प्रकार के संचालन का प्रयास किया जाता है और क्या कार्य करने की आशा की जाती है (अर्थात, उत्तम रूप से संकलित करना)। सी++11 में स्पष्ट लैंग्वेज सुविधा के रूप में कॉन्सेप्ट्स (सी++) को जोड़ने का प्रस्ताव था, चूँकि इसे तैयार नहीं होने के कारण अस्वीकार कर दिया गया था। सी++20 ने अंततः अवधारणा के परिष्कृत डिज़ाइन को स्वीकार कर लिया।

चूंकि जावा (प्रोग्रामिंग लैंग्वेज) और सी में जेनेरिक में सी++ के टेम्पलेट (सी++)सी++) से कुछ समानताएं हैं, इसलिए वहां अवधारणाओं की भूमिका प्रोटोकॉल (वस्तु-उन्मुख प्रोग्रामिंग) द्वारा निभाई जाती है। चूँकि, अवधारणाओं और इंटरफेस के मध्य महत्वपूर्ण अंतर है: जब किसी विशेष इंटरफ़ेस को प्रारम्भ करने के लिए टेम्पलेट पैरामीटर की आवश्यकता होती है, तो मैचिंग टाइप केवल क्लासेज हो सकता है जो उस इंटरफ़ेस को (स्पष्ट रूप से) प्रारम्भ करता है। अवधारणाएँ अधिक फ्लेक्स्बिल हैं क्योंकि उन्हें दो विधियों से संतुष्ट किया जा सकता है:

  • अवधारणा मानचित्र का उपयोग करके स्पष्ट रूप से संतुष्ट के रूप में परिभाषित किया गया है (इंटरफ़ेस के विपरीत, प्रकार को भिन्न से परिभाषित किया गया है)।
  • ऑटो अवधारणाओं के लिए स्पष्ट रूप से परिभाषित, जिसका उपयोग अंतर्निहित प्रकारों और अन्य प्रकारों के लिए भी किया जा सकता है जो इस उपयोग के लिए पूर्वनिर्धारित नहीं थे।

किंतु सी लैंग्वेज में कई संरचनाएं हैं जहां उपयोग किए गए प्रकार को परिभाषित इंटरफ़ेस को स्पष्ट रूप से प्रारम्भ करने की आवश्यकता नहीं है, इसे केवल संबंधित पैटर्न से मैच करना आवश्यक है (चूँकि, इन पैटर्न को अवधारणाएं नहीं कहा जाता है)। जैसे foreach पुनरावृत्ति कथन पुनरावृत्त वस्तु को किसी भी प्रकार की होने की अनुमति देते है, जब तक कि यह उपयुक्त GetEnumerator विधि प्रारंभ करता है।[4] (उपयोग कथन के साथ तुलना करें जिसके लिए System.IDisposable को प्रारंभ करने के लिए संसाधन की आवश्यकता होती है।[5])

निम (प्रोग्रामिंग लैंग्वेज) संकलन-समय बूलियन विधेय की श्रृंखला के रूप में अवधारणाओं को प्रारम्भ करता है।[6]

अवधारणाओं के समान कुछ प्रारम्भ करने वाली अन्य लैंग्वेज हास्केल (प्रोग्रामिंग लैंग्वेज) है, जहां फीचर को टाइप क्लासेज कहा जाता है।

उदाहरण

कुल ऑर्डर

कुल ऑर्डरिंग < ऑपरेटर के शब्दार्थ का वर्णन करती है। एक प्रकार पूर्ण रूप से तब व्यवस्थित होता है जब < द्विआधारी विधेय होता है और निम्नलिखित गुणों को संतुष्ट करता है:[7][8]

  • एंटी-रिफ्लेक्टिव: !(a < a) किसी भी मान के लिए a है।
  • ट्रांजिटिव: यदि a < b और b < c तब a < c
  • एंटी सिमेट्रिक: यदि a < b तब !(b < a)
  • कुल: यदि a!= b तब a < b या b < a है।

कई एल्गोरिदम उत्तम रूप से कार्य करने के लिए इन गुणों पर आशा करते हैं। उदाहरण के लिए min फ़ंक्शन को पूर्ण रूप से ऑर्डर किए गए प्रकारों पर सुरक्षित रूप से परिभाषित किया जा सकता है:

// requires: T satisfies Totally Ordered
template <typename T>
T min(T a, T b) {
    //  < is defined.
    if (b < a) {
       return b;
    } else {
       // !(b < a) implies a == b or a < b
       return a;
    }
}

इटरेटर

यदि प्रकार I सी++ में ट्रिवियल इटरेटर अवधारणा को संतुष्ट करता है, और i प्रकार का है I, निम्नलिखित संगत शब्दार्थ के साथ मान्य अभिव्यक्तियाँ हैं:[9]

  • I i डिफ़ॉल्ट कंस्ट्रक्शन
  • *i किसी प्रकार T में परिवर्तनीय होना चाहिए।
  • i->m मान्य है यदि (*i).m है।

यह भी देखें

  • प्रोटोकॉल (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)
  • अवधारणाएँ (सी++)
  • इंटरफ़ेस (जावा)
  • क्लास टाइप करें

संदर्भ

  1. Austern, M.H. Generic programming and the STL: using and extending the C++ Standard Template Library. 1998. pp 17–18
  2. a bit of background for concepts and C++17—Bjarne Stroustrup, by Bjarne Stroustrup | Feb 26, 2016
  3. Alex Stepanov, by Bjarne Stroustrup | Jan 21, 2016
  4. C# 6.0 draft specification, The foreach statement
  5. C# 6.0 draft specification, The using statement
  6. "निम प्रायोगिक विशेषताएं". nim-lang.org. Retrieved 2023-06-19.
  7. Stepanov, Alexander (2009). प्रोग्रामिंग के तत्व. Addison-Wesley Professional. p. 49. ISBN 9780321635372.
  8. Total Orderings - Efficient Programming with Components
  9. Trivial Iterator


बाहरी संबंध