1)
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));
}
*) なぜ 1 番と 2 番よりも 3 番が好まれるのですか?
*) factory(41) が呼び出された場合、右辺値で呼び出されるのはなぜですか?
*)# BOOST_ASIO_MOVE_ARG(type) type&& を定義します。この場合の && は何ですか?