http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57977
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- It is not the zero length which is causing the copy constructor to be created but rather the const part which causes the copy constructor to happen.