मैं समझने की कोशिश कर रहा हूं कि std :: ref कैसे काम करता है।संदर्भ_वापर और std :: ref कैसे काम करते हैं?
#include <functional>
#include <iostream>
template <class C>
void func(C c){
c += 1;
}
int main(){
int x{3};
std::cout << x << std::endl;
func(x);
std::cout << x << std::endl;
func(std::ref(x));
std::cout << x << std::endl;
}
Output : 3 3 4
उपरोक्त कोड में, मैं तीसरे समारोह कॉल के लिए टेम्पलेट पैरामीटर C
std::reference_wrapper<int>
के रूप में instantiated है लगता है। the reference, पढ़ने के दौरान मैंने देखा कि std::reference_wrapper<int>
में कोई +=
ऑपरेटर नहीं है। फिर, c += 1;
मान्य है?
फिर, सी अभी भी संदर्भ_वापर है, है ना? –
Sungmin
@ सुंगमिन: दरअसल, 'सी' स्वयं प्रकार बदल नहीं सकता है; लेकिन 'c.operator int &()' के परिणामस्वरूप '+ =' लागू किया गया है जो 'संदर्भ_वापर' के लक्ष्य का संदर्भ होगा। –
धन्यवाद, मैं समझता हूं। – Sungmin