Immutable persistent data structures for C++