I'm building a library that generates a couple of types of objects that can be used by user code and the library. To keep track of these objects, I'd like to use shared_ptr's, so I can build in some run-time clean up. Since these are consumed by user code, I was curious if it would be worth typedefing the shared_ptr type to simplify the user code. So instead of std::shared_ptr<Foo>, user code could use FooPtr or something.
Would that be a reasonable thing to do, or is the risk of unclear code too much?