literal and rvalue reference
问题 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? 回答1: 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