Вы можете изменить подпись одного из методов. Это может не выглядеть красиво, однако это самый простой способ.
Так что вы могли бы в принципе иметь
void outputString(const string &ss, int notneeded) {
cout << "outputString(const string& ) " + ss << endl;
}
void outputString(const string ss) {
cout << "outputString(const string ) " + ss << endl;
}
и когда вы хотите вызвать первую функцию, просто вызовите ее с помощью:
outputString("ambigiousmethod", 0);
, что приведет к отличительному вызову.
Другого пути нет (хотелось бы, чтобы в этом его ошиблись), поскольку C ++ не допускает перегрузки, когда передача (по значению или по ссылке) - единственная разница в сигнатуре.
Редактировать: как указал bzabhi, вы также можете изменить подпись, изменив ссылку на указатель. В приведенном вами примере это сработает, однако в некоторых случаях вам может потребоваться изменить код функции.