#pragma once #include namespace saw { namespace rmt { struct DeviceHip {}; } template<> class remote { private: public: template error_or> connect(){ return make_error(); } }; error_or> create_remote(){ auto rc = hipInit(0); return make_error(); } template class rpc_client { public: template struct request { std::tuple...> ids; error_or>> wait(); }; }; template class rpc_server { private: /** * Needs a variant ptr of all possible return types */ struct data_storage { }; }; }