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