The C++ language requires all classes to have four special functions: a default constructor, a copy constructor, a destructor, and an assignment operator. The bindings for these functions are listed below; their semantics are discussed in Section Semantics . The two constructors are not virtual. The bindings prototype functions are using the type <CLASS> rather than listing each function for every MPI class. The token <CLASS> can be replaced with valid MPI-2 class names, such as Group, Datatype, etc., except when noted. In addition, bindings are provided for comparison and inter-language operability from Sections Semantics and Mixed-Language Operability .