TITLE: Function declarations with no definitions PROBLEM: jbuck@forney.berkeley.edu (Joe Buck) If you advertise the existence of a function you don't provide, you deserve to lose, even if the ARM (which, by the way, isn't the final ANSI/ISO standard) doesn't explicitly say so. RESPONSE: sdm@cs.brown.edu (Scott Meyers), 1992Feb20 No no no no no no no. This thinking makes no sense for C++ programs, because you don't have control over which functions are declared and defined. Remember assignment, copy construction, and address-of? If you don't declare them, the compiler generates them for you. So what do you do if you explicitly want to disallow copy construction? Answer: you declare the copy constructor private AND you explicitly do NOT define it. By making it private, you limit its accessibility, but by not defining it, you plan on getting a link error if you accidently call it yourself in one of your member functions. I haven't checked recently, but this is precisely the strategy that was used in the iostream library to make sure nobody ever passed a stream by value. Somewhere in the ARM, by the way, I'm almost certain it expressly allows you to declare a function and then not define it iff you never call it. The original question, by the way, concerned virtual functions, which is certainly a tricky business. In the general case, the compiler can't possibly hope to figure out which derived class virtuals might be called, so it assumes that if a base class virtual is called, then it might really resolve to a derived class virtual, and it demands a definition for each derived class implementation. Better static analysis of a program can eliminate some of these demands (including the one in the original posting, as I recall), but they can't make them go away in general. It would probably be a good idea for the ANCInators to explicitly address this issue so compiler writers would know what kinds of analysis they are required to do. My feeling is that they should be required to do none, but may do as much as they please.