[xsd-users] ICE

Andrew Ward andy.ward at hevday.com
Wed Jun 21 22:43:44 EDT 2006


Hi Boris,
Thanks for the tips covered in the "Delay Loading" email. I have come to 
a satisfactory solution.

I have come across a VC 7.1 internal compiler error while making a call 
into some XSD generated code. Although I am sure the XSD code is fine, I 
thought I would bring it to your attention in case you want to generate 
code that avoids the situation.

fatal error C1001: INTERNAL COMPILER ERROR
        (compiler file 'msc1.cpp', line 2701)

The code that causes the Microsoft bug is along the lines of this:

template <class Base>
struct A : public Base::MngCursor {
  typedef typename Base::MngCursor Inherited; 
};

template <class Base>
struct B : public Base::MngCursor {
  typedef  typename Base::MngCursor Inherited; 
};

template <class Base>
struct C {
  typedef B <Base> MngCursor;
  friend struct B <Base>;
};

class D {};

struct E {
  typedef D MngCursor;
};

A<C<E> > k;


And is described here:
http://support.microsoft.com/default.aspx?scid=kb%3Ben-gb%3B824389


I am getting the ICE when making a call like this:
int s;
s = x.A().get().B().get();

x is a const reference to a generated type
A is an optional<>
B is an optional<> with a base type of int


Andy.





More information about the xsd-users mailing list