Вы можете использовать внутренний тип:
template <typename U>
struct sptr {
typedef tr1::shared_ptr<U> t;
};
Тогда скажите sptr<U>::t
, или, к сожалению, часто typename sptr<U>::t
.
C ++ 0x имеет шаблоны typedefs, вы можете проверить, можно ли убедить ваш компилятор принять их:
template<typename U>
using sptr = tr1::shared_ptr<U>;
Тогда скажи sptr<U>
И, конечно, всегда есть #define sptr ::tr1::shared_ptr
, например, если вы ожидаете C ++ 0x в будущем и хотите сократить разрыв. Или если вы используете его в достаточно узком контексте, чтобы макрос не был страшным.