Implement pointer views that take in a normal or smart pointer and deserialize as a shared_ptr. Add test.
Amir Kamil
Branch: akamil/upcxx:shared_ptr_view
Branch: berkeleylab/upcxx:develop
Open
Implements pointer views as discussed in spec issue 165. The implementation does not rely on serializability of smart pointers. Furthermore, unlike for smart pointers in PR 257, the underlying object is deserialized directly into dynamic memory, avoiding overflowing the stack for large objects.
The current implementation only supports pointer views that deserialize as shared_ptrs. However, the core implementation is agnostic to the kind of smart pointer, and we should be able to add support of deserializing as unique_ptrs with minimal effort.
The implementation supports serializing both individual objects as well as arrays of objects through through pointer views.