On MSVC and linux/g++ this works fine. However, if I compile on MacOS, with g++ and probably libc++ as STL, the unordered_map construct seems to default initialize the VarIntVector and not pass the scoped allocator. Which fails, because the interprocess allocator is not default constructable, it needs a reference to a segment manager.
2021-03-20T07:14:56.5388750Z /usr/local/share/vcpkg/installed/x64-osx/include/boost/container/scoped_allocator.hpp:443:32: error: constructor for 'boost::container::dtl::scoped_allocator_adaptor_base<boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64>>' must explicitly initialize the base class 'boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64>' which does not have a default constructor
2021-03-20T07:14:56.5391710Z BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor_base()
2021-03-20T07:14:56.5392270Z ^
2021-03-20T07:14:56.5395420Z /usr/local/share/vcpkg/installed/x64-osx/include/boost/container/scoped_allocator.hpp:644:32: note: in instantiation of member function 'boost::container::dtl::scoped_allocator_adaptor_base<boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64>>::scoped_allocator_adaptor_base' requested here
2021-03-20T07:14:56.5397550Z BOOST_CONTAINER_FORCEINLINE scoped_allocator_adaptor()
2021-03-20T07:14:56.5398080Z ^
2021-03-20T07:14:56.5400950Z /Users/runner/work/tilemaker/tilemaker/include/osm_store.h:120:25: note: in instantiation of member function 'boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> >::scoped_allocator_adaptor' requested here
2021-03-20T07:14:56.5402840Z VarIntVector(A alloc = A())
2021-03-20T07:14:56.5403260Z ^
2021-03-20T07:14:56.5413170Z /usr/local/share/vcpkg/installed/x64-osx/include/boost/unordered/detail/implementation.hpp:2040:11: note: in instantiation of function template specialization 'boost::unordered::detail::func::construct_from_args<boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<boost::unordered::detail::node<boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<std::__1::pair<const unsigned long long, VarIntVector<unsigned long long, boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> > > >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> >, std::__1::pair<const unsigned long long, VarIntVector<unsigned long long, boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> > > > >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> >, std::__1::pair<const unsigned long long, VarIntVector<unsigned long long, boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> > > >, const std::__1::piecewise_construct_t &, std::__1::tuple<unsigned long long &>, std::__1::tuple<> >' requested here
2021-03-20T07:14:56.5420390Z construct_from_args(
2021-03-20T07:14:56.5420750Z ^
2021-03-20T07:14:56.5428320Z /usr/local/share/vcpkg/installed/x64-osx/include/boost/unordered/detail/implementation.hpp:3774:54: note: in instantiation of function template specialization 'boost::unordered::detail::func::construct_node_from_args<boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<boost::unordered::detail::node<boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<std::__1::pair<const unsigned long long, VarIntVector<unsigned long long, boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> > > >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> >, std::__1::pair<const unsigned long long, VarIntVector<unsigned long long, boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> > > > >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> >, const std::__1::piecewise_construct_t &, std::__1::tuple<unsigned long long &>, std::__1::tuple<> >' requested here
2021-03-20T07:14:56.5434010Z node_tmp b(boost::unordered::detail::func::construct_node_from_args(
2021-03-20T07:14:56.5434560Z ^
2021-03-20T07:14:56.5441480Z /usr/local/share/vcpkg/installed/x64-osx/include/boost/unordered/unordered_map.hpp:226:23: note: in instantiation of function template specialization 'boost::unordered::detail::table<boost::unordered::detail::map<boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<std::__1::pair<const unsigned long long, VarIntVector<unsigned long long, boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> > > >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> >, const unsigned long long, VarIntVector<unsigned long long, boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> > >, std::__1::hash<unsigned long long>, std::__1::equal_to<unsigned long long> > >::emplace_unique<const std::__1::piecewise_construct_t &, std::__1::tuple<unsigned long long &>, std::__1::tuple<> >' requested here
2021-03-20T07:14:56.5446600Z return table_.emplace_unique(
2021-03-20T07:14:56.5447020Z ^
2021-03-20T07:14:56.5453500Z /Users/runner/work/tilemaker/tilemaker/include/osm_store.h:377:30: note: in instantiation of function template specialization 'boost::unordered::unordered_map<const unsigned long long, VarIntVector<unsigned long long, boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> > >, std::__1::hash<unsigned long long>, std::__1::equal_to<unsigned long long>, boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<std::__1::pair<const unsigned long long, VarIntVector<unsigned long long, boost::container::scoped_allocator_adaptor<boost::interprocess::node_allocator<unsigned char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> > > >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0>, 0>, iset_index>, 64> > >::emplace<const std::__1::piecewise_construct_t &, std::__1::tuple<unsigned long long &>, std::__1::tuple<> >' requested here