The C++ bindings provide a less error prone version of libpmemobj through the implementation of a pmem-resident property, persistent pointers, scoped and closure transactions, locking primitives and many others.
The C++ documentation contains the description of all available classes.
The following series of blog articles provides a tutorial introduction to the C++ bindings: