On Sat, Oct 07, 2023 at 12:00:48AM +0000, claptrap via Digitalmars-d-learn wrote: > > char[] foo; > foo.length = 4; > foo[] = 'a'; // ok sets all elements > foo[] = "a"; // range error at runtime? > foo[] = "ab"; // range error at runtime? > > So I meant to init with a char literal but accidently used double > quotes. Should that even compile? Shouldn't the compiler at least > complain when trying to init with "ab"?
If you want initialization, don't slice the target array. For example: char[] foo = "a"; Or: char[] foo; ... foo = "a"; When you write `foo[]` you're taking a slice of the array, and in that case if the lengths of both sides of the assignment don't match, you'll get a runtime error. T -- Always remember that you are unique. Just like everybody else. -- despair.com