Path: utzoo!utgpu!news-server.csri.toronto.edu!rutgers!rochester!kodak!ispd-newsserver!tuna!randolph From: randolph@ssd.kodak.com (Gary L. Randolph) Newsgroups: comp.std.c++ Subject: ::Foo() Message-ID: <1990Nov21.152532.5147@ssd.kodak.com> Date: 21 Nov 90 15:25:32 GMT Sender: news@ssd.kodak.com Distribution: usa Organization: Eastman Kodak Lines: 36 Originator: randolph@tuna This is a proposal for a language addition to C++. It provides users a way to initialize the internal pointers (virtual function table, and virtual base class pointers), in a way that does not depend on the implementation of the language constructs, or on a particular compiler's formatting of the object. Need for the feature: We are storing objects to disk. When we read them back into memory, we need an implementation independent way of restoring any internal structure built by the C++ compiler/runtime mechanisms, without altering any user data. Proposed language syntax: We suggest that the desired behavior is that already supplied by the default void constructor, and overloaded "new" operator: new (someAddr) Foo(); In fact, this is how we have implemented our persistent object store's ability to reestablish the C++ internal structure. Unfortunately, this removes the void constructor from application use. We would like to obtain the same behavior even if the programmer has redefined the default constructor, and propose the following syntax: new (someAddr) ::Foo(); This is very analogous to the usage of "::new" when the programmer has overriden the standard "new" operator. Gary Randolph Eastman Kodak Company