Header file shared_memory.hpp
namespace eosio
{
template <typename T>
struct shared_memory;
template <typename Stream>
datastream<Stream>& operator>>(datastream<Stream>& ds, shared_memory<datastream<Stream>>& dest);
template <typename Stream1, typename Stream2>
datastream<Stream1>& operator<<(datastream<Stream1>& ds, shared_memory<datastream<Stream2>> const& obj);
template <typename Stream>
datastream<Stream>& operator>>(datastream<Stream>& ds, shared_memory<std::string_view>& dest);
template <typename Stream>
datastream<Stream>& operator<<(datastream<Stream>& ds, shared_memory<std::string_view> const& obj);
}
Struct eosio::shared_memory
template <typename T>
struct shared_memory
{
T value = {};
T& operator*();
T const& operator*() const;
T* operator->();
T const* operator->() const;
};
Tag objects which share memory with streams or with other things. These reduce deserialization overhead, but require the source memory isn’t freed and remains untouched.