В старые времена у вас может быть такая функция:
const char* find_response(const char* const id) const;
Если элемент не может быть найден, то для указания факта может быть возвращен нуль, иначе, очевидно, вернуть соответствующую строку.
Но когда функция изменена на:
const std::string& find_response(const std::string& id) const;
Что вы возвращаете, чтобы указать, что элемент не найден?
Или должна быть подпись действительно:
bool find_response(const std::string& id, std::string& value) const;
Какой будет самый элегантный современный С++-способ?