Fix returning buffers from std::visit

Last time I tried it references somehow didn't work.
This commit is contained in:
Robbert van der Helm
2020-03-08 18:40:16 +01:00
parent 2326a92c62
commit d8e39ed16a
2 changed files with 11 additions and 8 deletions
+3 -3
View File
@@ -165,11 +165,11 @@ void passthrough_event(boost::asio::local::stream_protocol::socket& socket,
} }
void* data = std::visit( void* data = std::visit(
overload{[&](std::nullptr_t) -> void* { return nullptr; }, overload{[&](const std::nullptr_t&) -> void* { return nullptr; },
[&](std::string s) -> void* { [&](const std::string& s) -> void* {
return const_cast<char*>(s.c_str()); return const_cast<char*>(s.c_str());
}, },
[&](std::array<char, max_string_length> buffer) -> void* { [&](std::array<char, max_string_length>& buffer) -> void* {
return buffer.data(); return buffer.data();
}}, }},
event.payload); event.payload);
+8 -5
View File
@@ -142,13 +142,16 @@ void Logger::log_event(bool is_dispatch,
<< ", option = " << option << ", data = "; << ", option = " << option << ", data = ";
std::visit( std::visit(
overload{[&](std::nullptr_t) { message << "<nullptr>"; }, overload{
[&](std::string s) { message << "\"" << s << "\""; }, [&](const std::nullptr_t&) { message << "<nullptr>"; },
[&](std::array<char, max_string_length>) { [&](const std::string& s) { message << "\"" << s << "\""; },
message << "<writeable_buffer>"; [&](const std::array<char, max_string_length>&) {
}}, message << "<writeable_buffer>";
}},
payload); payload);
message << ")";
log(message.str()); log(message.str());
} }
} }