> What kind of semantic ambiguities are you talking about?
You cannot declare :
int[3] func();
Which would have been required for NRVO to function on a c-style array. Even if you tried:
auto func()
{
int var[3];
return var;
}
What you get is an int* and not an array, because of the implicit decay of var as the address of the array.
Even with NRVO this would never work for c-style arrays. It is a completely different problem to solve, and not relevant to RVO.