It gets worse. Look at the following code: using System;
class Class1 { static void Main(string[] args) { ArgIterator iter = new ArgIterator(Foo(__arglist(1, 2, 3))); } static RuntimeArgumentHandle Foo(__arglist) { return __arglist; } } This is effectively the same as returning an ArgIterator, yet the C# compiler does allow this variant. Regards, Jeroen > > -----Original Message----- > From: Frans Bouma [mailto:[EMAIL PROTECTED] > Sent: Tuesday, June 17, 2003 11:53 > To: [EMAIL PROTECTED] > > > It's hardcoded in the compiler. If you've got the Rotor > > sources installed, the check is done in > TYPESYM::isSpecialByRefType(). > > http://dotnet.di.unipi.it/Content/sscli/docs/doxygen/csharp/sy > mmgr_8cpp- > source.html#l02546 > > Hmmm. I really wonder why they didn't simply add an > attribute to > the method. Hardcoding this kind of stuff is dangerous, it can be a > source for bugs or other nasties in the future while it is completely > unnecessary. > > FB > > > Regards, > Jeroen > > > > > -----Original Message----- > > From: Frans Bouma [mailto:[EMAIL PROTECTED] > > Sent: Tuesday, June 17, 2003 10:20 > > To: [EMAIL PROTECTED] > > > > > I wrote: > > > > > > > I would guess that it has not so much to do with > > ArgIterator being a > > > > special type, but that in this instance, iterator > itself is stack > > > > allocated. Frankly, I don't think this requires > > documentation. We > > > > all know that you can't return a stack allocated struct from a > > > > function. > > > > Fortunately, we now have a compiler that won't let us do this > > > > accidentally. > > > > > > This was a foolish thing to post. I hit send before thinking > > > too deeply about it. Of course the boxing operation should > > > copy the struct to the heap. Sorry. > > > > Well, the assumption was not that weird. If you > check out the > > MSIL of ArgIterator, there is no special attribute attached to it. > > Which makes me wonder, why does the compiler generate an error on > > this object? > > Is that object hardcoded in the compiler or is there a > > special attribute > > attached to it that isn't visible in the MSIL? (so you can use that > > yourself in your code too) > > > > FB > > >