मेरा मतलब है कि std::make_tuple
क्यों मौजूद है? मुझे पता है कि ऐसी परिस्थितियां हैं जहां फ़ंक्शन आपके द्वारा टाइप किए जाने वाले वर्णों की मात्रा को कम कर देता है क्योंकि आप टेम्पलेट पैरामीटर से बच सकते हैं। लेकिन क्या यह एकमात्र कारण है? std::tuple
क्या विशेष बनाता है कि फ़ंक्शन मौजूद है जबकि अन्य क्लास टेम्पलेट्स में ऐसा फ़ंक्शन नहीं है? क्या यह केवल इसलिए है क्योंकि आप ऐसी स्थितियों में std::tuple
अधिक बार उपयोग कर सकते हैं?`std :: make_tuple` का कारण क्या है?
// Avoiding template parameters in definition of variable.
// Consider that template parameters can be very long sometimes.
std::tuple<int, double> t(0, 0.0); // without std::make_tuple
auto t = std::make_tuple(0, 0.0); // with std::make_tuple
// Avoiding template parameters at construction.
f(std::tuple<int, double>(0, 0.0)); // without std::make_tuple
f(std::make_tuple(0, 0.0)); // with std::make_tuple
लेकिन जैसे ऊपर लिखा है, तो आप कई अन्य वर्ग टेम्पलेट्स के लिए इस तरह एक समारोह नहीं है:
यहां दो उदाहरण हैं जहां std::make_tuple
पात्रों की मात्रा को कम कर रहे हैं।
कई समान कार्य हैं, लेकिन सबसे स्पष्ट प्रत्यक्ष तुलना ['std :: make_pair'] है (http://en.cppreference.com/w/cpp/utility/pair/make_pair)। मुझे लगता है कि अंगूठे का नियम यह हो सकता है कि वे मौजूद हों यदि आप इन ऑब्जेक्ट्स को किसी अन्य अभिव्यक्ति के हिस्से के रूप में बनाना चाहते हैं, फ़ंक्शन को कॉल करने के लिए, आदि – BoBTFish
आपको अन्य मेक_ * फ़ंक्शन के लिए कौन सा वर्ग पसंद आएगा? हम पहले से ही make_shared, make_unique, आदि प्राप्त कर रहे हैं –
केवल अंतर ही कटौती प्रकार है। लेकिन कटौती का प्रकार उपयोगी हो सकता है, इसलिए यही कारण है। –