> What I do not understand is why the compiler does _not_ find > ambiguity when the C++ class header is slimmed down to just the > necessary parts: the operator overload and a constructor.
Because you've removed the ambiguity in simple.h. If you add the line operator const char*()const; back into class FGString (since the original header has this declaration), you will get the error also for simple.h. > Either it's ambiguous, or it isn't, but it shouldn't be both on > the same architecture (hppa), with the same compiler (g++ 3.0.2), > and essentially the same code. The code is not essentially the same; you've deleted the part that causes the ambiguity. Regards, Martin