Я склонен согласиться с руководством Google по стилю c ++, где они запрашивают, чтобы входные параметры были ссылками на константы (const &), а выходные параметры - указателями.
void Foo(const string &in, string *out)
Это дает пользователю немедленную очередь шаблоновчто параметр in (выше) является входным параметром, а out является выходным параметром.