Andrew Pinski wrote:

>> In any case, in practice, ARM's RealView compiler accepts:
>>
>>   struct __declspec(notshared) S {
>>     __declspec(dllimport) void f();
>>     void g();
>>   };
>>
>>   void S::g() {
>>     f();
>>   }
>>
>> And, there's a large body of code that uses this.
> 
> Because you missed typeinfo is also hidden (not just vtables).

That has nothing to do with the fact that there's a lot of existing code
out there depending on this.

> So in an user program you use typeid(S), you will get a link failure.
> If f and g are switch around, you will then not get a link failure but
> doing a "throw S();" with a catch on the outside, will cause the throw
> to be caught by a try{ .... } catch (S &a) ...

Sure.  But, so what?  If you try to access hidden variables from C,
things won't work then too.

You seem to be saying that because you can do things that don't work, we
should disallow a useful construct.

-- 
Mark Mitchell
CodeSourcery
[EMAIL PROTECTED]
(650) 331-3385 x713

Reply via email to