Put/Get: smart pointer support
Created by: ax3l
Downstream in openPMD-api, @C0nsultant introduced a nice mechanism for user data-sharing which might be working well upstream in ADIOS2, too.
In Put
/Get
, you already support storing contiguous memory layouts such as raw pointers and std::vector
(and as we learned std::span
in the future, yay!). Can you please also add support for (std::unique_ptr<T>
and) std::shared_ptr<T>
?
shared_ptr
is really great for memory passing, as you can increase the reference counter when users give memory to you and you can decrement it when you are done with it, e.g. on EndStep
. This allows checking by ref-count or even passing the overall ownership of temporaries to ADIOS2, which is simplifies a lot on our side, as lifetime control is a typical issue in C++ code when handling raw memory in a highly asynchronous manner.
cc @franzpoeschel