क्या किसी अन्य फ़ंक्शन के लिए ऑटो को पास करने का कोई तरीका है?क्या सी ++ में तर्क के रूप में ऑटो पास करने का कोई तरीका है?
int function(auto data)
{
//DOES something
}
क्या किसी अन्य फ़ंक्शन के लिए ऑटो को पास करने का कोई तरीका है?क्या सी ++ में तर्क के रूप में ऑटो पास करने का कोई तरीका है?
int function(auto data)
{
//DOES something
}
तुम्हारा मतलब है कि यह है कि आप पास कर सकते हैं चाहते हैं फ़ंक्शन में कोई भी प्रकार, इसे एक टेम्पलेट बनाएं:
template <typename T> int function(T data);
आपके द्वारा उपयोग किए गए वाक्यविन्यास को अनुमति देने के लिए सी ++ 17 के लिए एक प्रस्ताव है (जैसा कि सी ++ 14 जेनेरिक लैम्बडास के लिए पहले से ही करता है), लेकिन यह अभी तक मानक नहीं है।
मुझे आश्चर्य है: क्या यह वही बात है? यही है, प्रत्येक 'टी' के लिए 'फंक्शन
@black: यह वही चीज़ लिखने का एक छोटा सा तरीका है। 'ऑटो' के लिए प्रत्येक पैरामीटर प्रकार के लिए एक अलग फ़ंक्शन तत्काल किया जाएगा, जैसा कि यह नामित टेम्पलेट पैरामीटर के लिए होगा। –
मैंने सोचा कि निहित टेम्पलेट मानकों को अवधारणाओं से बाधित किया जाना चाहिए ... अब अवधारणाएं पूरी तरह से मर चुकी हैं, या 'ऑटो' अनियंत्रित तर्कों के लिए उपयोग की जाती है और (किसी दिन) अवधारणाओं के लिए अवधारणाओं का उपयोग किया जाता है? –
टेम्पलेट्स जिस तरह से आप सामान्य कार्यों के साथ ऐसा कर रहे हैं:
template <typename T>
int function(T data)
{
//DOES something
}
वैकल्पिक रूप से, आप एक लैम्ब्डा इस्तेमाल कर सकते हैं:
auto function = [] (auto data) { /*DOES something*/ };
क्या यह मान्य सी ++ 11 है? वह सी ++ 14 सही है? – Alex
जेनेरिक लैम्बडास एक सी ++ 14 फीचर हैं। – TartanLlama
इस बात पर निर्भर करता है कि आप क्या करने में सक्षम हैं। आपको फ़ंक्शन टेम्पलेट की पेशकश करने की क्या आवश्यकता नहीं है? – Quentin
यह एक भयानक विचार है। तर्क प्रकार न केवल आपके लिए है, बल्कि दूसरों के लिए यह जानने के लिए कि आपका कार्य किस प्रकार चाहता है। बस 3 सेकंड लें और टाइप लिखें, आलसी मत बनें (या टाइप को ठीक नहीं किया गया है तो टेम्पलेट का उपयोग करें)। – Synxis
हाँ, सी ++ 1z अवधारणाओं के साथ, आप यह कर सकते हैं :) – Navin