क्या उनका वही मतलब है?
Universal reference एक शब्द स्कॉट Meyers एक सीवी-अयोग्य टेम्पलेट पैरामीटर, जो तब या तो एक मूल्य या एक lvalue संदर्भ के रूप में निष्कर्ष निकाला जा सकता है के लिए एक rvalue संदर्भ लेने की अवधारणा को वर्णन करने के लिए गढ़ा गया था।
उस समय सी ++ मानक के लिए विशेष शब्द नहीं था, जो सी ++ 11 में एक निरीक्षण था और इसे सिखाना मुश्किल बनाता है। इस निरीक्षण N4164, जो [temp.deduct] को निम्नलिखित परिभाषा जोड़ा द्वारा उपचार किया गया था:
एक अग्रेषण संदर्भ एक सीवी-अयोग्य टेम्पलेट पैरामीटर के लिए एक rvalue संदर्भ है। यदि P
एक अग्रेषण संदर्भ है और तर्क एक अंतराल है, तो टाइप के लिए ए के स्थान पर "ए के लिए lvalue संदर्भ" प्रकार का उपयोग किया जाता है।
इसलिए, दोनों का मतलब एक ही बात है, और वर्तमान सी ++ मानक शब्द अग्रेषण संदर्भ है। पेपर स्वयं ही बताता है कि क्यों "अग्रेषण संदर्भ" "सार्वभौमिक संदर्भ" से बेहतर शब्द है।
क्या यह केवल फ़ॉरवर्डिंग संदर्भ है यदि फ़ंक्शन बॉडी std::forward
पर कॉल करता है?
नहीं, आप अग्रेषण संदर्भ के साथ क्या करते हैं, नाम के लिए अप्रासंगिक है। अवधारणा अग्रेषण संदर्भ बस कैसे प्रकार T
में निष्कर्ष निकाला है को संदर्भित करता:
template <class T> void foo(T&&); // <==
यह बाद अग्रेषित किए जाने की जरूरत नहीं है।
कुछ पृष्ठभूमि सामग्री के लिए https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers देखें। –
@SamVarshavchik क्या आपने वास्तव में या तो प्रश्न या ब्लॉग पढ़ा था? – Barry