~/BlockSci2/release$ make
[ 57%] Built target blocksci
[ 58%] Building CXX object src/parser/CMakeFiles/blocksci_parser.dir/address_writer.cpp.o
/home/mribbons/BlockSci2/src/parser/address_writer.cpp: In instantiation of ‘AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> [with auto:16 = const ScriptOutput<(blocksci::AddressType::Enum)0u>]’:
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:233:11: required by substitution of ‘template<class F, class ... As> constexpr decltype (forward<F>(f)((forward<As>)(mpark::lib::cpp17::invoke::as)...)) mpark::lib::cpp17::invoke(F&&, As&& ...) [with F = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; As = {const ScriptOutput<(blocksci::AddressType::Enum)0u>&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:260:57: required from ‘struct mpark::detail::visitation::variant::visit_exhaustive_visitor_check<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>, const ScriptOutput<(blocksci::AddressType::Enum)0u>&>’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:663:13: required from ‘constexpr decltype(auto) mpark::detail::visitation::variant::value_visitor<Visitor>::operator()(Alts&& ...) const [with Alts = {const mpark::detail::alt<0ul, ScriptOutput<(blocksci::AddressType::Enum)0u> >&}; Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:233:11: required by substitution of ‘template<class F, class ... As> constexpr decltype (forward<F>(f)((forward<As>)(mpark::lib::cpp17::invoke::as)...)) mpark::lib::cpp17::invoke(F&&, As&& ...) [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; As = {const mpark::detail::alt<0ul, ScriptOutput<(blocksci::AddressType::Enum)0u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:529:15: required from ‘static constexpr decltype(auto) mpark::detail::visitation::base::dispatcher<Is>::impl<F, Vs>::dispatch(F, Vs ...) [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >&&; Vs = {const mpark::detail::base<(mpark::detail::Trait)1, ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}; long unsigned int ...Is = {0ul}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:537:11: [ skipping 3 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:580:45: required from ‘static constexpr auto mpark::detail::visitation::base::make_fmatrix() [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >&&; Vs = {const mpark::detail::base<(mpark::detail::Trait)1, ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:629:11: required from ‘static constexpr decltype(auto) mpark::detail::visitation::base::visit_alt(Visitor&&, Vs&& ...) [with Visitor = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; Vs = {const mpark::detail::impl<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:688:11: required from ‘static constexpr decltype(auto) mpark::detail::visitation::variant::visit_alt(Visitor&&, Vs&& ...) [with Visitor = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; Vs = {const mpark::variant<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:703:11: required from ‘static constexpr decltype(auto) mpark::detail::visitation::variant::visit_value(Visitor&&, Vs&& ...) [with Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; Vs = {const mpark::variant<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:1738:52: required from ‘constexpr decltype(auto) mpark::visit(Visitor&&, Vs&& ...) [with Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; Vs = {const mpark::variant<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/src/parser/address_writer.cpp:20:107: required from here
/home/mribbons/BlockSci2/src/parser/address_writer.cpp:20:90: error: cannot call member function ‘size_t AddressWriter::serialize(const ScriptOutput<type>&, uint32_t) [with blocksci::AddressType::Enum type = (blocksci::AddressType::Enum)0u; size_t = long unsigned int; uint32_t = unsigned int]’ without object
return mpark::visit([&](auto &scriptOutput) { return serialize(scriptOutput, txNum); }, output.wrapped);
^
/home/mribbons/BlockSci2/src/parser/address_writer.cpp: In instantiation of ‘AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> [with auto:16 = const ScriptOutput<(blocksci::AddressType::Enum)1u>]’:
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:233:11: required by substitution of ‘template<class F, class ... As> constexpr decltype (forward<F>(f)((forward<As>)(mpark::lib::cpp17::invoke::as)...)) mpark::lib::cpp17::invoke(F&&, As&& ...) [with F = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; As = {const ScriptOutput<(blocksci::AddressType::Enum)1u>&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:260:57: required from ‘struct mpark::detail::visitation::variant::visit_exhaustive_visitor_check<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>, const ScriptOutput<(blocksci::AddressType::Enum)1u>&>’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:663:13: required from ‘constexpr decltype(auto) mpark::detail::visitation::variant::value_visitor<Visitor>::operator()(Alts&& ...) const [with Alts = {const mpark::detail::alt<1ul, ScriptOutput<(blocksci::AddressType::Enum)1u> >&}; Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:233:11: required by substitution of ‘template<class F, class ... As> constexpr decltype (forward<F>(f)((forward<As>)(mpark::lib::cpp17::invoke::as)...)) mpark::lib::cpp17::invoke(F&&, As&& ...) [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; As = {const mpark::detail::alt<1ul, ScriptOutput<(blocksci::AddressType::Enum)1u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:529:15: required from ‘static constexpr decltype(auto) mpark::detail::visitation::base::dispatcher<Is>::impl<F, Vs>::dispatch(F, Vs ...) [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >&&; Vs = {const mpark::detail::base<(mpark::detail::Trait)1, ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}; long unsigned int ...Is = {1ul}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:537:11: [ skipping 3 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:580:45: required from ‘static constexpr auto mpark::detail::visitation::base::make_fmatrix() [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >&&; Vs = {const mpark::detail::base<(mpark::detail::Trait)1, ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:629:11: required from ‘static constexpr decltype(auto) mpark::detail::visitation::base::visit_alt(Visitor&&, Vs&& ...) [with Visitor = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; Vs = {const mpark::detail::impl<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:688:11: required from ‘static constexpr decltype(auto) mpark::detail::visitation::variant::visit_alt(Visitor&&, Vs&& ...) [with Visitor = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; Vs = {const mpark::variant<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:703:11: required from ‘static constexpr decltype(auto) mpark::detail::visitation::variant::visit_value(Visitor&&, Vs&& ...) [with Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; Vs = {const mpark::variant<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:1738:52: required from ‘constexpr decltype(auto) mpark::visit(Visitor&&, Vs&& ...) [with Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; Vs = {const mpark::variant<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/src/parser/address_writer.cpp:20:107: required from here
/home/mribbons/BlockSci2/src/parser/address_writer.cpp:20:90: error: cannot call member function ‘size_t AddressWriter::serialize(const ScriptOutput<type>&, uint32_t) [with blocksci::AddressType::Enum type = (blocksci::AddressType::Enum)1u; size_t = long unsigned int; uint32_t = unsigned int]’ without object
/home/mribbons/BlockSci2/src/parser/address_writer.cpp: In instantiation of ‘AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> [with auto:16 = const ScriptOutput<(blocksci::AddressType::Enum)2u>]’:
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:233:11: required by substitution of ‘template<class F, class ... As> constexpr decltype (forward<F>(f)((forward<As>)(mpark::lib::cpp17::invoke::as)...)) mpark::lib::cpp17::invoke(F&&, As&& ...) [with F = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; As = {const ScriptOutput<(blocksci::AddressType::Enum)2u>&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:260:57: required from ‘struct mpark::detail::visitation::variant::visit_exhaustive_visitor_check<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>, const ScriptOutput<(blocksci::AddressType::Enum)2u>&>’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:663:13: required from ‘constexpr decltype(auto) mpark::detail::visitation::variant::value_visitor<Visitor>::operator()(Alts&& ...) const [with Alts = {const mpark::detail::alt<2ul, ScriptOutput<(blocksci::AddressType::Enum)2u> >&}; Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:233:11: required by substitution of ‘template<class F, class ... As> constexpr decltype (forward<F>(f)((forward<As>)(mpark::lib::cpp17::invoke::as)...)) mpark::lib::cpp17::invoke(F&&, As&& ...) [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; As = {const mpark::detail::alt<2ul, ScriptOutput<(blocksci::AddressType::Enum)2u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:529:15: required from ‘static constexpr decltype(auto) mpark::detail::visitation::base::dispatcher<Is>::impl<F, Vs>::dispatch(F, Vs ...) [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >&&; Vs = {const mpark::detail::base<(mpark::detail::Trait)1, ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}; long unsigned int ...Is = {2ul}]’
// plus more erros
Also it looks like src/blocksci/heuristics/blockchain_heuristics.hpp was missing #include <stdio.h>
Thanks again for the big code dump, I look forward to testing it out and hopefully contributing!