Я видел в основных рекомендациях по С ++, что предпочтительно возвращать выходные значения из функций.
Я пытаюсь понять, удобно ли это для универсального кода.
Например,Чтобы преобразовать строку в определенное значение, я обычно делал бы что-то вроде:
template<class T>
T convertTo(const std::string& value)
{
// Do conversion
return convertedValue;
}
// Usage
convertTo<float>("test");
Без указания типа, который я бы сделал:
template<class T>
void convertTo(const std::string& value, T& outputValue)
{
// Do conversion
// outputValue = convertedType
}
// Usage
float myVar{};
convertTo("test", myVar);
Я знаю такжечто вы можете сделать что-то вроде:
auto convertTo(const std::string& value, anotherInputPerhaps) ->decltype(myexpression)
{
// get the type to return basing on anotherInputPerhaps
return /*convertedValue*/
}
Проблема здесь в том, как получить правильное преобразованное значение, возможно, без передачи какого-либо ввода или, возможно, с использованием значения по умолчанию.Это возможно?
Спасибо
[РЕДАКТИРОВАТЬ] В поисках чего-то, что не приводит к накладным расходам