A Mechanized Semantics for C++ Object Construction and Destruction, With Applications to Resource Management
The authors present a formal operational semantics and its Coq mechanization for the C++ object model, featuring object construction and destruction, shared and repeated multiple inheritance, and virtual function call dispatch. These are key C++ language features for high-level system programming, in particular for predictable and reliable resource management. This paper is the first to present a formal mechanized account of the meta-theory of construction and destruction in C++, and applications to popular programming techniques such as "Resource acquisition is initialization." They also report on irregularities and apparent contradictions in the ISO C++03 and C++11 standards.