例如,假设我正在为 vector 的push_back方法编写一个薄包装器。
class Foo
{
public:
void myPushBack(Bar b); // Line in question
private:
std::vector<Bar> vec;
}
void Foo::MyPushBack(bar b)
{
vec.push_back(bar);
}
main()
{
Foo f();
f.myPushBack();
}
我的问题是
myPushBack
函数的正确签名是什么?那么我的下一个问题是,如果myPushBack
的类型为vec
,那么对std::vector<weak_ptr<Bar>>
函数的正确签名是什么? 最佳答案
假设您正在使用C++ 11,则应使用完美的转发习惯用法:
template<typename T> void Foo::MyPushBack(T &&b)
{
vec.push_back(std::forward<T>(b));
}
由于它是模板,因此 vector 的实际类型无关紧要。它甚至会考虑隐式转换,例如
const char*
到std::string
。关于c++ - 简单参数转发(我的签名应该是什么?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23812201/