У меня есть некоторый «устаревший» код (который я не могу изменить, но я должен добавить к нему), который выглядит примерно так:
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
никогда не назначается до его использования), есть ли другие потенциально смертельные проблемы с интерфейсом такого типа?