1)C++完美轉發
template<typename T, typename Arg>
shared_ptr<T> factory(Arg arg)
{
return shared_ptr<T>(new T(arg));
}
2)
template<typename T, typename Arg>
shared_ptr<T> factory(Arg& arg)
{
return shared_ptr<T>(new T(arg));
}
3)
template<typename T, typename Arg>
shared_ptr<T> factory(Arg const & arg)
{
return shared_ptr<T>(new T(arg));
}
*)爲什麼數3優選比1號和2號?
*)如果工廠(41)被調用,爲什麼調用右值?
*)#define BOOST_ASIO_MOVE_ARG(type)type & &。什麼是& &在這種情況下?
你可能想查找* rvalue引用*。他們是做到這一點的「正確」方式,部分爲此目的引入了語言。它還解釋了'type &&'符號。 – templatetypedef