Because the compiler does not want you to be able to coerce *it* into making a deep copy of an array under any circumstance. If you want a deep copy of an array, you must explixitly allocate and initialize it. Think how memory guzzling a recursive alrorithm would be if that algorithm recursed on a large array.