You can use the internal type:
template <typename U>
struct sptr {
typedef tr1::shared_ptr<U> t;
};
Then say, sptr<U>::tor, unfortunately, often typename sptr<U>::t.
C ++ 0x has a typedefs pattern, you can check if you can convince your compiler to accept them:
template<typename U>
using sptr = tr1::shared_ptr<U>;
Then say sptr<U>
, , #define sptr ::tr1::shared_ptr, , ++ 0x . , , .