Aşağıda bir örnek kod var. eğlenceli işlev derlenmeyecektir iken XYZ yapıcı olmayan const referans olarak argüman alır rağmen Yukarıdaki koddaYapıcım neden argüman olarak referans değil, geçici nesnelerle çağrılmasına izin veriyor?
#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.
}
, gayet derler. Bu g ++ derleyici veya C++ standart için belirli bir şey hakkında söylemek zorunda mı?
Düzenleme:
gr ++ -v bu verir.
gcc versiyon 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)
: olarak işlev şablonu tanımlar. – Gabe