次のような「レガシー」コード(変更はできませんが、追加する必要があります)があります。
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
使用する前に が決して割り当てられないことを確認します)。この種のインターフェイスには他に潜在的に致命的な問題はありますか?