C++的模板在进行参数转发时有一些奇怪的现象,所见并非所得,先来看下面的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| template<typename T> void reference(T &v) { printf("L value\n"); } template<typename T> void reference(T &&v) { printf("R value\n"); } template<typename T> void fun(T &&x) { reference(x); } int main() { fun(1); int x = 1; fun(x); return 0; }
|
其中上面两行用于检测