Erhm, that should be @S[1].
No, @ is not needed here, because untyped const or var want variable, not address.
The problem lies elsewhere. When using indexes like S[1] program tests the boundaries, which wrong for empty strings, but when casting to a pointer the check excluded.