MSVC, जीसीसी और बजना के अनुसार, निम्नलिखित कोड अवैध है:सार्वभौमिक संदर्भ पैरामीटर के साथ एक समारोह टेम्पलेट में एक वर्ग टेम्पलेट का उपयोग करना
template <typename T>
void f(T&& e) {
std::vector<T> v;
// do something with v and e ...
}
int main() {
int i;
f(i);
}
MSVC पैदावार
xmemory0 (591): त्रुटि सी 2528: 'पॉइंटर': संदर्भ में सूचक अवैध
जीसीसी और क्लैंग समान ध्वनि त्रुटि संदेश देते हैं। ध्यान दें कि सार्वभौमिक संदर्भ पैरामीटर e
का उपयोग नहीं किया जाता है।
टिप्पणी: संकलक जाहिर वेक्टर
v
का दृष्टांत के लिए, के बारे में यहint
के लिए एक संदर्भ के साथ इस्तेमाल किया जा रहा शिकायत में विफल रहता है कक्षा टेम्पलेट इन्स्टेन्शियशन के संदर्भ में देखना'std::vector<T,std::allocator<_Ty>>'
[ T=int &, _Ty=int & ]
साथ संकलित किया जा रहा लेकिन मैं नहीं देख सकता कि फ़ंक्शन टेम्पलेट f
int
के संदर्भ के साथ तत्काल है।
क्या कोई यहां संकलक त्रुटियों की व्याख्या कर सकता है जो हम यहां देखते हैं?
ध्यान दें कि * अग्रेषण संदर्भ * अब पसंदीदा शब्द है। – TartanLlama