On Aug 24, 2007, at 4:38 PM, Dale Johannesen wrote: > > On Aug 24, 2007, at 4:03 PM, Chris Lattner wrote: > >>> >>> + /* The definition of equality is not straightforward for >>> floating point, >>> + so we won't use operator==. Use one of the following, or >>> write >>> + whatever it is you really mean. */ >>> + bool operator==(const APFloat &) const; // DO NOT IMPLEMENT >> >> Hey Dale, >> >> I think that you can just remove this and the compiler will give you >> a compile-time error if you try to use it. If you define it like >> this, you just get a link-time error. > > Yep, and the linker error message doesn't tell you where the > reference is coming from (I'm speaking from experience). I mostly > did it this way because I see about 40 other places it was done this > way, and I do see the utility as a statement of intent. Why is this > one different?
The difference here is that C++ compilers automatically synthesis copy ctors and default ctors and operator=, but they don't do the same for operator==. To disable these automatically generated members, you have to "define" them, and put them in the private part of the class (so any users will get compile-time access violation errors as well as link errors). -Chris _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits