I have some ‘legacy’ code (which I can’t change, but need to add on to) that looks something like this:
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); }
This feels unsafe (i.e., making sure that target is never assigned to before it’s used), are there any other potentially lethal problems with this sort of interface?
Well.. If you do the code:
then value will get it’s constructor called on it. The template honestly just looks like the constructor is just getting called twice.
Also, if T is just plain old data, then there is no lethal problem that could occur…
What exactly are you worried about occurring?