我有一些'遗留'代码(我无法更改,但需要添加),看起来像这样:
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
在使用之前从未被分配过),这种界面是否存在其他潜在的致命问题?
答案 0 :(得分:1)
嗯..如果你做代码:
T value;
然后value将获取它的构造函数。诚实地,模板看起来像构造函数刚刚被调用两次。
另外,如果T只是普通的旧数据,那么就不会出现致命的问题...
你到底发生了什么事?