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/symmgr_8cpp- source.html#l02546
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 >