Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/Client/ResponseReader.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,10 @@ struct Data {

/** Unpacks tuples to passed container. */
template<class T>
bool decode(T& tuples)
bool decode(T&& tuples)
{
it_t itr = iters.first;
bool ok = mpp::decode(itr, tuples);
bool ok = mpp::decode(itr, std::forward<T>(tuples));
assert(!ok || itr == iters.second);
return ok;
}
Expand Down
11 changes: 11 additions & 0 deletions test/ClientTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1125,6 +1125,17 @@ response_decoding(Connector<BUFFER, NetProvider> &client)
fail_if(response->body.data->decode(arr_of_str));
/* We should successfully decode data after all. */
fail_unless(response->body.data->decode(arr_of_num));
fail_unless(std::get<0>(arr_of_num) == 666);

TEST_CASE("decode data to rvalue object");
num = 0;
fail_unless(response->body.data->decode(std::forward_as_tuple(num)));
fail_unless(num == 666);

TEST_CASE("decode data to object with an mpp tag");
std::get<0>(arr_of_num) = 0;
fail_unless(response->body.data->decode(mpp::as_arr(arr_of_num)));
fail_unless(std::get<0>(arr_of_num) == 666);

client.close(conn);
}
Expand Down
Loading