void test(int && val)
{
val=4;
}
void main()
{
test(1);
std::cin.ignore();
}
Is a int
is created when test
is called or by default in c++ literals are int
type?
Note that your code would compile only with C++11 compiler.
When you pass an integral literal, which is by default of int
type, unless you write 1L
, a temporary object of type int
is created which is bound to the parameter of the function. It's like the first from the following initializations:
int && x = 1; //ok. valid in C++11 only.
int & y = 1; //error, both in C++03, and C++11
const int & z = 1; //ok, both in C++03, and C++11
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With