I'm working on a C++ project (needs to be fast, sorry,) and I don't want the headers to pollute the namespace with using directives. However, return types like boost::shared_ptr< std::list<File> > tempt me to do so, just so I can shorten my lines. I thought of putting the using directives within my namespace, but that still includes those names when others include my namespace. Maybe that isn't so bad, but I'd much prefer if my namespace only exported names belonging specifically to my namespace, and not those names used internally.
functor_following_boost_guidelines_oh_god_please_kill_me::result_type
convenience_wrapper_for_functor_following_boost_guidelines_oh_god_please_kill_me(functor_following_boost_guidelines_oh_god_please_kill_me::argument_type path)
{
return functor_following_boost_guidelines_oh_god_please_kill_me()(path);
} Don't blame me. This is how modern C++ is written. Just look at the libstdc++ headers.
It gets better when you use templates and state. Wanna see?