use*_*130 1 c++ arguments weak-ptr
举个例子,假设我正在为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();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是该函数的正确签名是什么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));
}
Run Code Online (Sandbox Code Playgroud)
由于它是一个模板,因此矢量的实际类型无关紧要.它甚至会考虑隐式转换,比如const char*到std::string.