If the function parameter is a "const reference", the compiler generates temporary variables in the following 2 ways.
a) If the actual argument is the correct type, but it isn't Lvalue
double Cubes(const double & num)
{
numb = numb * numb * numb;
return numb;
}
double temp = 2.0;
double value = cubes(3.0 + temp); // the argument is said to be an expression ,not the Lvalue;
b) A type can be converted to the correct type
long temp = 3 L;
double value = cuberoot ( temp ) ;