मेरे पास नीचे एक नमूना कोड है।तर्क के रूप में गैर कॉन्स्ट संदर्भ के साथ मेरे कन्स्ट्रक्टर को अस्थायी वस्तुओं के साथ बुलाया जाने की अनुमति क्यों है?
#include<iostream>
template<typename T>
class XYZ
{
private:
T & ref;
public:
XYZ(T & arg):ref(arg)
{
}
};
class temp
{
int x;
public:
temp():x(34)
{
}
};
template<typename T>
void fun(T & arg)
{
}
int main()
{
XYZ<temp> abc(temp());
fun(temp()); //This is a compilation error in gcc while the above code is perfectly valid.
}
ऊपर कोड भले ही XYZ निर्माता गैर स्थिरांक संदर्भ के रूप में तर्क लेता में, यह ठीक संकलित मज़ा समारोह को संकलित करने में विफल रहता है, जबकि। क्या यह G ++ कंपाइलर या सी ++ मानक के लिए विशिष्ट है इसके बारे में कुछ कहना है?
संपादित करें:
g ++ -v यह देता है।
जीसीसी संस्करण 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)
आप जी का कौन सा संस्करण ++ आप उपयोग कर रहे निर्दिष्ट करना चाहिए: अपने कार्य टेम्पलेट के रूप में परिभाषित करते हैं। – Gabe