johnb@srchtec.UUCP (John Baldwin) (11/14/90)
In article <1990Nov12.184240.23430@odin.corp.sgi.com> linton@sgi.com (Mark Linton) writes: >All the responses so far have essentially said the same thing: >"we don't care what const really means, we'll use it how we want". > [...excerpted...] > We can > (1) continue to abuse its meaning as many are already, > using casts to circumvent compiler attempts to enforce the meaning > (2) change the meaning of const to remove the storage semantics > (3) find another way to do what we want Perhaps there is another way: in the past, when syntax and symantics clashed, language designers (and users, and implementors) sought ways for the programmer to syntactically specify the semantics desired. I believe I have an approach that may allow this. The approach is to add the keyword "adjunct" to the language: either as a type *modifier* (like "const") or as a class visibility restriction (like "public", "protected", and "private"). Webster's defines the word "adjunct" in its noun form as... 1. "something joined or added to another thing but not essentially a part of it." This is exactly what we want: data which is "joined to" an object, but "not really a part of it." I envision the following usage and treatment... class some_list // some list of items we have { public: long sum() const; . . . private: // some private data adjunct: bool sum_is_current; long computed_sum; } Now, the sum() method can still be considered a const function, ***since it doesn't modify any of the "actual" object!*** Hopefully, my intent is apparent: adjunct data may be changed without affecting the "const-ness" of the rest of the object. Stated another way, const member functions may change adjunct data, but not any other member data. The other usage would look like this: class some_list { public: long sum() const; private: // data adjunct bool sum_is_current; adjunct long computed_sum; }; I'm not sure this is the way to go, however, because "const-ness" applies to data other than object member data, but "adjunct-ness" does not. Comments? [Bat-anti-flame-suit *on*] -- John T. Baldwin | "Pereant qui ante nos nostra dixerunt!" Search Technology, Inc. | (A plague on those who said our good johnb%srchtec.uucp@mathcs.emory.edu | things before we did!)