C++ 转发引用: 完美转发的关键

在现代 C++(C++11 及以后)中,一个非常强大的特性叫做 转发引用(forward references),它让开发者可以通过一个模板函数同时处理左值和右值——而且只需写一次函数模板声明。 虽然语法看起来有点复杂,但本质上,转发引用是一种非常优雅的语法机制,让代码既简洁又高效。 什么是转发引用? 当模板参数以 T&& 的形式出现在函数参数中,并且 T 是通过类型推导得到的,这种情况下就形成了一个 转发引用。例如: template<typename T> void func(T&& arg); 乍一看,这像是右值引用,但实际上是 转发引用,因为 T 是通过类型推导得出的。这个函数既能接受左值,也能接受右值: int x = 5; func(x); // 左值 …