Два способа возврата результата для одного действия
От: unhelper  
Дата: 06.10.12 21:37
Оценка:
Некоторые действия можно выполнить двумя способами: изменить передаваемый аргумент или вернуть результат в виде отдельного значения. Типичный пример — операторы += и +. Обычно первый записывает результат в левый операнд, а второй возвращает временное значение. Мне понадобилось определить несколько вспомогательных функций для работы со строками, и тут я столкнулся с аналогичной ситуацией. Например, функцию удаления замыкающих пробельных символов можно реализовать в двух вариантах

// пишем результат в аргумент и возвращаем ссылку на аргумент
string& remove_trailing_whitespaces(string& s);

// возвращаем результат в виде временного объекта
string remove_trailing_whitespaces(const string& s);

Хотелось бы иметь сразу оба варианта, но я пока не могу сообразить, как бы их получше совместить. Такая перегрузка меня не устраивает, так как легко будет допустить ошибку. Можно дать функциям разные названия, но какие? Коверкать названия приписыванием какой-нибудь невнятной абракадабры не хочется. Приставки или суффиксы, если уж их использовать, должны быть достаточно информативными, но не слишком длинными. Ничего подходящего я придумать не смог Может, в Boost или других библиотеках есть примеры разруливания такой ситуации?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.