should this work?
BCS
nothing at pathlink.com
Fri Dec 29 14:14:40 PST 2006
Lars Ivar Igesund wrote:
> BCS wrote:
>
>> void main()
>> {
>> char[] str = "hello";
>> int i = 5;
>> switch(str)
>> {
>> case "hello":
>> switch(i)
>> {
>> case "goodby": // case for outer switch in inner switch
>> writef("foo\n");
>> case 1:;
>> writef("bar\n");
>> }
>> }
>> }
>>
>> It doesn't because (I assume), it isn't allowed to in C/C++. However
>> that is because C has only one type for switches, integer. D doesn't
>> have this restriction, array types are just fine. So why not (sanity
>> aside*) permit it?
>>
>> * I can think of no uses for it, but what does that matter.
>
> I don't think this should be allowed. To actually enter the "goodby" case,
> str will have to be changed after case "hello" has been entered.
>
Well, assume that str could be "goodby". Say it (and i) comes from
somewhere else. the result would be:
str i output
-----------------------
hello 1 "bar\n"
hello !1 error: no default
goodby any "foo\nbar\n"
It's all moot because it doesn't work and, IMHO, goes along with the
duff's device into the category of "things that you probably shouldn't do".
:b
More information about the Digitalmars-d-learn
mailing list