From f2bace6c1f0fcd5499aaa4946422cb274d9b16f7 Mon Sep 17 00:00:00 2001 From: Patrick Niklaus Date: Thu, 22 Mar 2018 16:32:30 +0000 Subject: [PATCH] Wrap lambda in std::function because of boost version issues --- include/storage/serialization.hpp | 6 ++++-- src/extractor/extraction_containers.cpp | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/storage/serialization.hpp b/include/storage/serialization.hpp index 1a5ad329b..0b9f68a08 100644 --- a/include/storage/serialization.hpp +++ b/include/storage/serialization.hpp @@ -271,7 +271,9 @@ void writeBoolVector(tar::FileWriter &writer, const std::string &name, const Vec writer.WriteElementCount64(name, count); std::uint64_t index = 0; - const auto encode = [&]() { + // FIXME on old boost version the function_input_iterator does not work with lambdas + // so we need to wrap it in a function here. + const std::function encode_function = [&]() -> char { auto write_size = std::min(count - index, CHAR_BIT); auto packed = packBits(data, index, write_size); index += CHAR_BIT; @@ -280,7 +282,7 @@ void writeBoolVector(tar::FileWriter &writer, const std::string &name, const Vec std::uint64_t number_of_blocks = std::ceil((double)count / CHAR_BIT); writer.WriteStreaming( - name, boost::make_function_input_iterator(encode, boost::infinite()), number_of_blocks); + name, boost::make_function_input_iterator(encode_function, boost::infinite()), number_of_blocks); } } diff --git a/src/extractor/extraction_containers.cpp b/src/extractor/extraction_containers.cpp index 3c4878d47..d53774f0e 100644 --- a/src/extractor/extraction_containers.cpp +++ b/src/extractor/extraction_containers.cpp @@ -589,7 +589,7 @@ void ExtractionContainers::WriteNodes(storage::tar::FileWriter &writer) const auto node_id_iterator = used_node_id_list.begin(); const auto all_nodes_list_end = all_nodes_list.end(); - const auto encode = [&]() { + const std::function encode_function = [&]() -> QueryNode { BOOST_ASSERT(node_id_iterator != used_node_id_list.end()); BOOST_ASSERT(node_iterator != all_nodes_list_end); BOOST_ASSERT(*node_id_iterator >= node_iterator->node_id); @@ -613,7 +613,7 @@ void ExtractionContainers::WriteNodes(storage::tar::FileWriter &writer) const writer.WriteElementCount64("/extractor/nodes", used_node_id_list.size()); writer.WriteStreaming( "/extractor/nodes", - boost::make_function_input_iterator(encode, boost::infinite()), + boost::make_function_input_iterator(encode_function, boost::infinite()), used_node_id_list.size()); TIMER_STOP(write_nodes);