У меня есть «наследство» код (который я не могу изменить, но нужно добавить к), который выглядит примерно так:Инициализация и назначение
template<typename T> T Foo(T& target)
{
//Assign to 'target', but never read from it before that.
//Also, 'target' is going to be a POD-type.
target = T();
return target;
}
int main()
{
float value = Foo(value);
}
Это чувствует себя небезопасно (т.е., убедившись, что target
никогда не назначается до его использования), есть ли другие потенциально летальные проблемы с этим видом интерфейса?
Я согласен, что он «чувствует» себя небезопасно, и я не могу найти ничего в стандарте, рассматривая это. Есть ли веская причина, почему так делается? Если нет, я обычно предлагаю вам изменить его, но вы сказали, что не можете, поэтому я подозреваю, что это всего лишь случай обучения жить с ним. :( –