Make dynamic message Take messages rvalue methods

This commit is contained in:
Tyler Neely 2022-08-02 07:12:05 +00:00
parent 3b44ef70b6
commit 902a46d14f
2 changed files with 3 additions and 3 deletions

View File

@ -58,7 +58,7 @@ struct OpaqueMessage {
}
template <Message... Ms>
requires(sizeof...(Ms) > 0) std::optional<RequestEnvelope<Ms...>> Take() {
requires(sizeof...(Ms) > 0) std::optional<RequestEnvelope<Ms...>> Take() && {
std::optional<std::variant<Ms...>> m_opt = VariantFromAny<Ms...>(std::move(message));
if (m_opt) {
@ -111,7 +111,7 @@ class OpaquePromise {
OpaquePromise &operator=(const OpaquePromise &) = delete;
template <typename T>
std::unique_ptr<ResponsePromise<T>> Take() {
std::unique_ptr<ResponsePromise<T>> Take() && {
MG_ASSERT(typeid(T) == *ti_);
MG_ASSERT(ptr_ != nullptr);

View File

@ -152,7 +152,7 @@ class SimulatorHandle {
// TODO(tyler) search for item in can_receive_ that matches the desired types, rather
// than asserting that the last item in can_rx matches.
auto m_opt = message.Take<Ms...>();
auto m_opt = std::move(message).Take<Ms...>();
blocked_on_receive_ -= 1;