Temporary header file '/tmp/Y8VHGeLc2q/dump1.h' with the following content will be compiled to create GCC translation unit dump:

  // add defines
  #define __STDC_VERSION__ 201710L
#define _GXX_NULLPTR_T
#define CLUTTER_ENABLE_COMPOSITOR_API 1
#define _REGEX_NELTS(n)
#define _Atomic
#define PACKED
#define getaddrinfo_a(a,b,c,d)

  // add includes
  #include "/usr/include/hera/bottleneck/basic_defs_bt.h"
  #include "/usr/include/hera/bottleneck/bottleneck.h"
  #include "/usr/include/hera/bottleneck/bottleneck_detail.h"
  #include "/usr/include/hera/bottleneck/bottleneck_detail.hpp"
  #include "/usr/include/hera/bottleneck/bound_match.h"
  #include "/usr/include/hera/bottleneck/bound_match.hpp"
  #include "/usr/include/hera/bottleneck/def_debug_bt.h"
  #include "/usr/include/hera/bottleneck/diagram_reader.h"
  #include "/usr/include/hera/bottleneck/diagram_traits.h"
  #include "/usr/include/hera/bottleneck/dnn/geometry/euclidean-fixed.h"
  #include "/usr/include/hera/bottleneck/dnn/local/kd-tree.h"
  #include "/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp"
  #include "/usr/include/hera/bottleneck/dnn/local/search-functors.h"
  #include "/usr/include/hera/bottleneck/dnn/parallel/tbb.h"
  #include "/usr/include/hera/bottleneck/dnn/parallel/utils.h"
  #include "/usr/include/hera/bottleneck/dnn/utils.h"
  #include "/usr/include/hera/bottleneck/neighb_oracle.h"
  #include "/usr/include/hera/wasserstein/auction_oracle.h"
  #include "/usr/include/hera/wasserstein/auction_oracle_base.h"
  #include "/usr/include/hera/wasserstein/auction_oracle_base.hpp"
  #include "/usr/include/hera/wasserstein/auction_oracle_kdtree_pure_geom.h"
  #include "/usr/include/hera/wasserstein/auction_oracle_kdtree_pure_geom.hpp"
  #include "/usr/include/hera/wasserstein/auction_oracle_kdtree_restricted.h"
  #include "/usr/include/hera/wasserstein/auction_oracle_kdtree_restricted.hpp"
  #include "/usr/include/hera/wasserstein/auction_oracle_kdtree_single_diag.h"
  #include "/usr/include/hera/wasserstein/auction_oracle_kdtree_single_diag.hpp"
  #include "/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h"
  #include "/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp"
  #include "/usr/include/hera/wasserstein/auction_oracle_stupid_sparse_restricted.h"
  #include "/usr/include/hera/wasserstein/auction_oracle_stupid_sparse_restricted.hpp"
  #include "/usr/include/hera/wasserstein/auction_runner_fr.h"
  #include "/usr/include/hera/wasserstein/auction_runner_fr.hpp"
  #include "/usr/include/hera/wasserstein/auction_runner_gs.h"
  #include "/usr/include/hera/wasserstein/auction_runner_gs.hpp"
  #include "/usr/include/hera/wasserstein/auction_runner_gs_single_diag.h"
  #include "/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp"
  #include "/usr/include/hera/wasserstein/auction_runner_jac.h"
  #include "/usr/include/hera/wasserstein/auction_runner_jac.hpp"
  #include "/usr/include/hera/wasserstein/basic_defs_ws.h"
  #include "/usr/include/hera/wasserstein/basic_defs_ws.hpp"
  #include "/usr/include/hera/wasserstein/def_debug_ws.h"
  #include "/usr/include/hera/wasserstein/diagonal_heap.h"
  #include "/usr/include/hera/wasserstein/diagram_reader.h"
  #include "/usr/include/hera/wasserstein/dnn/geometry/euclidean-dynamic.h"
  #include "/usr/include/hera/wasserstein/dnn/geometry/euclidean-fixed.h"
  #include "/usr/include/hera/wasserstein/dnn/local/kd-tree.h"
  #include "/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp"
  #include "/usr/include/hera/wasserstein/dnn/local/search-functors.h"
  #include "/usr/include/hera/wasserstein/dnn/parallel/tbb.h"
  #include "/usr/include/hera/wasserstein/dnn/parallel/utils.h"
  #include "/usr/include/hera/wasserstein/dnn/utils.h"
  #include "/usr/include/hera/wasserstein/hera_infinity.h"
  #include "/usr/include/hera/wasserstein/opts/opts.h"
  #include "/usr/include/hera/wasserstein/wasserstein.h"
  #include "/usr/include/hera/wasserstein/wasserstein_pure_geom.hpp"

  // add namespaces
  namespace boost{typedef int tmp_add_type_1;}
  boost::tmp_add_type_1 tmp_add_func_1(){return 0;};
  namespace boost{namespace adaptors{typedef int tmp_add_type_2;}}
  boost::adaptors::tmp_add_type_2 tmp_add_func_2(){return 0;};
  namespace boost{namespace archive{typedef int tmp_add_type_3;}}
  boost::archive::tmp_add_type_3 tmp_add_func_3(){return 0;};
  namespace boost{namespace archive{namespace detail{typedef int tmp_add_type_4;}}}
  boost::archive::detail::tmp_add_type_4 tmp_add_func_4(){return 0;};
  namespace boost{namespace concepts{typedef int tmp_add_type_5;}}
  boost::concepts::tmp_add_type_5 tmp_add_func_5(){return 0;};
  namespace boost{namespace concepts{namespace detail{typedef int tmp_add_type_6;}}}
  boost::concepts::detail::tmp_add_type_6 tmp_add_func_6(){return 0;};
  namespace boost{namespace core{typedef int tmp_add_type_7;}}
  boost::core::tmp_add_type_7 tmp_add_func_7(){return 0;};
  namespace boost{namespace detail{typedef int tmp_add_type_8;}}
  boost::detail::tmp_add_type_8 tmp_add_func_8(){return 0;};
  namespace boost{namespace foreach{typedef int tmp_add_type_9;}}
  boost::foreach::tmp_add_type_9 tmp_add_func_9(){return 0;};
  namespace boost{namespace heap{typedef int tmp_add_type_10;}}
  boost::heap::tmp_add_type_10 tmp_add_func_10(){return 0;};
  namespace boost{namespace heap{namespace detail{typedef int tmp_add_type_11;}}}
  boost::heap::detail::tmp_add_type_11 tmp_add_func_11(){return 0;};
  namespace boost{namespace heap{namespace tag{typedef int tmp_add_type_12;}}}
  boost::heap::tag::tmp_add_type_12 tmp_add_func_12(){return 0;};
  namespace boost{namespace integer{typedef int tmp_add_type_13;}}
  boost::integer::tmp_add_type_13 tmp_add_func_13(){return 0;};
  namespace boost{namespace iterators{typedef int tmp_add_type_14;}}
  boost::iterators::tmp_add_type_14 tmp_add_func_14(){return 0;};
  namespace boost{namespace iterators{namespace detail{typedef int tmp_add_type_15;}}}
  boost::iterators::detail::tmp_add_type_15 tmp_add_func_15(){return 0;};
  namespace boost{namespace movelib{typedef int tmp_add_type_16;}}
  boost::movelib::tmp_add_type_16 tmp_add_func_16(){return 0;};
  namespace boost{namespace mp11{typedef int tmp_add_type_17;}}
  boost::mp11::tmp_add_type_17 tmp_add_func_17(){return 0;};
  namespace boost{namespace mp11{namespace detail{typedef int tmp_add_type_18;}}}
  boost::mp11::detail::tmp_add_type_18 tmp_add_func_18(){return 0;};
  namespace boost{namespace mpl{typedef int tmp_add_type_19;}}
  boost::mpl::tmp_add_type_19 tmp_add_func_19(){return 0;};
  namespace boost{namespace mpl{namespace aux{typedef int tmp_add_type_20;}}}
  boost::mpl::aux::tmp_add_type_20 tmp_add_func_20(){return 0;};
  namespace boost{namespace mpl{namespace placeholders{typedef int tmp_add_type_21;}}}
  boost::mpl::placeholders::tmp_add_type_21 tmp_add_func_21(){return 0;};
  namespace boost{namespace parameter{typedef int tmp_add_type_22;}}
  boost::parameter::tmp_add_type_22 tmp_add_func_22(){return 0;};
  namespace boost{namespace parameter{namespace aux{typedef int tmp_add_type_23;}}}
  boost::parameter::aux::tmp_add_type_23 tmp_add_func_23(){return 0;};
  namespace boost{namespace placeholders{typedef int tmp_add_type_24;}}
  boost::placeholders::tmp_add_type_24 tmp_add_func_24(){return 0;};
  namespace boost{namespace random{typedef int tmp_add_type_25;}}
  boost::random::tmp_add_type_25 tmp_add_func_25(){return 0;};
  namespace boost{namespace random{namespace detail{typedef int tmp_add_type_26;}}}
  boost::random::detail::tmp_add_type_26 tmp_add_func_26(){return 0;};
  namespace boost{namespace random{namespace traits{typedef int tmp_add_type_27;}}}
  boost::random::traits::tmp_add_type_27 tmp_add_func_27(){return 0;};
  namespace boost{namespace range{typedef int tmp_add_type_28;}}
  boost::range::tmp_add_type_28 tmp_add_func_28(){return 0;};
  namespace boost{namespace serialization{typedef int tmp_add_type_29;}}
  boost::serialization::tmp_add_type_29 tmp_add_func_29(){return 0;};
  namespace boost{namespace serialization{namespace detail{typedef int tmp_add_type_30;}}}
  boost::serialization::detail::tmp_add_type_30 tmp_add_func_30(){return 0;};
  namespace boost{namespace serialization{namespace stl{typedef int tmp_add_type_31;}}}
  boost::serialization::stl::tmp_add_type_31 tmp_add_func_31(){return 0;};
  namespace boost{namespace tuples{typedef int tmp_add_type_32;}}
  boost::tuples::tmp_add_type_32 tmp_add_func_32(){return 0;};
  namespace boost{namespace tuples{namespace detail{typedef int tmp_add_type_33;}}}
  boost::tuples::detail::tmp_add_type_33 tmp_add_func_33(){return 0;};
  namespace dnn{typedef int tmp_add_type_34;}
  dnn::tmp_add_type_34 tmp_add_func_34(){return 0;};
  namespace hera{typedef int tmp_add_type_35;}
  hera::tmp_add_type_35 tmp_add_func_35(){return 0;};
  namespace hera{namespace bt{typedef int tmp_add_type_36;}}
  hera::bt::tmp_add_type_36 tmp_add_func_36(){return 0;};
  namespace hera{namespace bt{namespace dnn{typedef int tmp_add_type_37;}}}
  hera::bt::dnn::tmp_add_type_37 tmp_add_func_37(){return 0;};
  namespace hera{namespace ws{typedef int tmp_add_type_38;}}
  hera::ws::tmp_add_type_38 tmp_add_func_38(){return 0;};
  namespace hera{namespace ws{namespace dnn{typedef int tmp_add_type_39;}}}
  hera::ws::dnn::tmp_add_type_39 tmp_add_func_39(){return 0;};
  namespace opts{typedef int tmp_add_type_40;}
  opts::tmp_add_type_40 tmp_add_func_40(){return 0;};
  namespace ws{typedef int tmp_add_type_41;}
  ws::tmp_add_type_41 tmp_add_func_41(){return 0;};
  namespace boost{namespace _bi{typedef int tmp_add_type_42;}}
  boost::_bi::tmp_add_type_42 tmp_add_func_42(){return 0;};
  namespace boost{namespace _mfi{typedef int tmp_add_type_43;}}
  boost::_mfi::tmp_add_type_43 tmp_add_func_43(){return 0;};
  namespace boost{namespace adaptors{namespace __anon717d93758811{typedef int tmp_add_type_44;}}}
  boost::adaptors::__anon717d93758811::tmp_add_type_44 tmp_add_func_44(){return 0;};
  namespace boost{namespace binary_op_detail{typedef int tmp_add_type_45;}}
  boost::binary_op_detail::tmp_add_type_45 tmp_add_func_45(){return 0;};
  namespace boost{namespace detail{namespace aligned_storage{typedef int tmp_add_type_46;}}}
  boost::detail::aligned_storage::tmp_add_type_46 tmp_add_func_46(){return 0;};
  namespace boost{namespace detail{namespace indirect_traits{typedef int tmp_add_type_47;}}}
  boost::detail::indirect_traits::tmp_add_type_47 tmp_add_func_47(){return 0;};
  namespace boost{namespace exception_detail{typedef int tmp_add_type_48;}}
  boost::exception_detail::tmp_add_type_48 tmp_add_func_48(){return 0;};
  namespace boost{namespace foreach_detail_{typedef int tmp_add_type_49;}}
  boost::foreach_detail_::tmp_add_type_49 tmp_add_func_49(){return 0;};
  namespace boost{namespace iterator_range_detail{typedef int tmp_add_type_50;}}
  boost::iterator_range_detail::tmp_add_type_50 tmp_add_func_50(){return 0;};
  namespace boost{namespace iterators{namespace advance_adl_barrier{typedef int tmp_add_type_51;}}}
  boost::iterators::advance_adl_barrier::tmp_add_type_51 tmp_add_func_51(){return 0;};
  namespace boost{namespace iterators{namespace distance_adl_barrier{typedef int tmp_add_type_52;}}}
  boost::iterators::distance_adl_barrier::tmp_add_type_52 tmp_add_func_52(){return 0;};
  namespace boost{namespace move_detail{typedef int tmp_add_type_53;}}
  boost::move_detail::tmp_add_type_53 tmp_add_func_53(){return 0;};
  namespace boost{namespace next_prior_detail{typedef int tmp_add_type_54;}}
  boost::next_prior_detail::tmp_add_type_54 tmp_add_func_54(){return 0;};
  namespace boost{namespace noncopyable_{typedef int tmp_add_type_55;}}
  boost::noncopyable_::tmp_add_type_55 tmp_add_func_55(){return 0;};
  namespace boost{namespace operators_impl{typedef int tmp_add_type_56;}}
  boost::operators_impl::tmp_add_type_56 tmp_add_func_56(){return 0;};
  namespace boost{namespace operators_impl{namespace operators_detail{typedef int tmp_add_type_57;}}}
  boost::operators_impl::operators_detail::tmp_add_type_57 tmp_add_func_57(){return 0;};
  namespace boost{namespace optional_config{typedef int tmp_add_type_58;}}
  boost::optional_config::tmp_add_type_58 tmp_add_func_58(){return 0;};
  namespace boost{namespace optional_detail{typedef int tmp_add_type_59;}}
  boost::optional_detail::tmp_add_type_59 tmp_add_func_59(){return 0;};
  namespace boost{namespace optional_ns{typedef int tmp_add_type_60;}}
  boost::optional_ns::tmp_add_type_60 tmp_add_func_60(){return 0;};
  namespace boost{namespace range_adl_barrier{typedef int tmp_add_type_61;}}
  boost::range_adl_barrier::tmp_add_type_61 tmp_add_func_61(){return 0;};
  namespace boost{namespace range_detail{typedef int tmp_add_type_62;}}
  boost::range_detail::tmp_add_type_62 tmp_add_func_62(){return 0;};
  namespace boost{namespace range_distance_adl_barrier{typedef int tmp_add_type_63;}}
  boost::range_distance_adl_barrier::tmp_add_type_63 tmp_add_func_63(){return 0;};
  namespace boost{namespace serialization{namespace void_cast_detail{typedef int tmp_add_type_64;}}}
  boost::serialization::void_cast_detail::tmp_add_type_64 tmp_add_func_64(){return 0;};
  namespace boost{namespace tt_align_ns{typedef int tmp_add_type_65;}}
  boost::tt_align_ns::tmp_add_type_65 tmp_add_func_65(){return 0;};
  namespace boost{namespace type_of{typedef int tmp_add_type_66;}}
  boost::type_of::tmp_add_type_66 tmp_add_func_66(){return 0;};
  namespace boost{namespace type_traits{typedef int tmp_add_type_67;}}
  boost::type_traits::tmp_add_type_67 tmp_add_func_67(){return 0;};
  namespace boost{namespace type_traits{namespace detail{typedef int tmp_add_type_68;}}}
  boost::type_traits::detail::tmp_add_type_68 tmp_add_func_68(){return 0;};
  namespace boost{namespace type_traits_detail{typedef int tmp_add_type_69;}}
  boost::type_traits_detail::tmp_add_type_69 tmp_add_func_69(){return 0;};
  namespace boost{namespace type_traits_swappable_detail{typedef int tmp_add_type_70;}}
  boost::type_traits_swappable_detail::tmp_add_type_70 tmp_add_func_70(){return 0;};
  namespace boost_concepts{typedef int tmp_add_type_71;}
  boost_concepts::tmp_add_type_71 tmp_add_func_71(){return 0;};
  namespace boost_concepts{namespace detail{typedef int tmp_add_type_72;}}
  boost_concepts::detail::tmp_add_type_72 tmp_add_func_72(){return 0;};
  namespace boost_optional_detail{typedef int tmp_add_type_73;}
  boost_optional_detail::tmp_add_type_73 tmp_add_func_73(){return 0;};
  namespace boost_swap_impl{typedef int tmp_add_type_74;}
  boost_swap_impl::tmp_add_type_74 tmp_add_func_74(){return 0;};
  namespace mpl_{typedef int tmp_add_type_75;}
  mpl_::tmp_add_type_75 tmp_add_func_75(){return 0;};
  namespace mpl_{namespace aux{typedef int tmp_add_type_76;}}
  mpl_::aux::tmp_add_type_76 tmp_add_func_76(){return 0;};

  // add classes
  _G_fpos64_t* tmp_add_class_0;
  _G_fpos_t* tmp_add_class_1;
  _IO_cookie_io_functions_t* tmp_add_class_2;

The GCC parameters:
  gcc -fdump-lang-raw -fkeep-inline-functions -c -x c++ -fpermissive -w "/tmp/Y8VHGeLc2q/dump1.h"  -I/usr/include/hera/wasserstein

In file included from /tmp/Y8VHGeLc2q/dump1.h:12:
/usr/include/hera/bottleneck/basic_defs_bt.h: In member function ‘void hera::bt::DiagramPointSet<Real_>::fillIn(const PointContainer&)’:
/usr/include/hera/bottleneck/basic_defs_bt.h:438:32: error: ‘DiagramTraits’ does not name a type
  438 |                 using Traits = DiagramTraits<PointContainer>;
      |                                ^~~~~~~~~~~~~
/usr/include/hera/bottleneck/basic_defs_bt.h:444:30: error: ‘Traits’ has not been declared
  444 |                     Real x = Traits::get_x(pt);
      |                              ^~~~~~
/usr/include/hera/bottleneck/basic_defs_bt.h:445:30: error: ‘Traits’ has not been declared
  445 |                     Real y = Traits::get_y(pt);
      |                              ^~~~~~
In file included from /usr/include/boost/bind.hpp:30,
                 from /usr/include/hera/bottleneck/dnn/geometry/../parallel/tbb.h:11,
                 from /usr/include/hera/bottleneck/dnn/geometry/euclidean-fixed.h:15,
                 from /usr/include/hera/bottleneck/neighb_oracle.h:37,
                 from /usr/include/hera/bottleneck/bound_match.h:36,
                 from /usr/include/hera/bottleneck/bottleneck_detail.h:41,
                 from /usr/include/hera/bottleneck/bottleneck.h:41,
                 from /tmp/Y8VHGeLc2q/dump1.h:13:
/usr/include/boost/bind.hpp: At global scope:
/usr/include/boost/bind.hpp:36:1: note: ‘#pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.’
   36 | BOOST_PRAGMA_MESSAGE(
      | ^~~~~~~~~~~~~~~~~~~~
In file included from /tmp/Y8VHGeLc2q/dump1.h:23:
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:10:1: error: redefinition of ‘hera::bt::dnn::KDTree<Traits_>::KDTree(const Traits&, HandleContainer&&)’
   10 | hera::bt::dnn::KDTree<T>::KDTree(const Traits& traits, HandleContainer&& handles):
      | ^~~~
In file included from /usr/include/hera/bottleneck/dnn/local/kd-tree.h:104,
                 from /usr/include/hera/bottleneck/neighb_oracle.h:38:
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:10:1: note: ‘hera::bt::dnn::KDTree<Traits_>::KDTree(const Traits&, HandleContainer&&)’ previously declared here
   10 | hera::bt::dnn::KDTree<T>::KDTree(const Traits& traits, HandleContainer&& handles):
      | ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:22:1: error: redefinition of ‘hera::bt::dnn::KDTree<Traits_>::KDTree(const Traits&, const Range&)’
   22 | hera::bt::dnn::KDTree<T>::KDTree(const Traits& traits, const Range& range):
      | ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:22:1: note: ‘hera::bt::dnn::KDTree<Traits_>::KDTree(const Traits&, const Range&)’ previously declared here
   22 | hera::bt::dnn::KDTree<T>::KDTree(const Traits& traits, const Range& range):
      | ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:30:6: error: redefinition of ‘void hera::bt::dnn::KDTree<Traits_>::init(const Range&)’
   30 | void hera::bt::dnn::KDTree<T>::init(const Range& range)
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:30:6: note: ‘void hera::bt::dnn::KDTree<Traits_>::init(const Range&)’ previously declared here
   30 | void hera::bt::dnn::KDTree<T>::init(const Range& range)
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:44:6: error: redefinition of ‘void hera::bt::dnn::KDTree<Traits_>::init()’
   44 | void hera::bt::dnn::KDTree<T>::init()
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:44:6: note: ‘void hera::bt::dnn::KDTree<Traits_>::init()’ previously declared here
   44 | void hera::bt::dnn::KDTree<T>::init()
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:64:27: error: redefinition of ‘struct hera::bt::dnn::KDTree<Traits_>::OrderTree’
   64 | hera::bt::dnn::KDTree<T>::OrderTree
      |                           ^~~~~~~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:64:27: note: previous definition of ‘struct hera::bt::dnn::KDTree<Traits_>::OrderTree’
   64 | hera::bt::dnn::KDTree<T>::OrderTree
      |                           ^~~~~~~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:128:6: error: redefinition of ‘void hera::bt::dnn::KDTree<Traits_>::update_n_elems(ssize_t, int)’
  128 | void hera::bt::dnn::KDTree<T>::update_n_elems(ssize_t idx, const int delta)
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:128:6: note: ‘void hera::bt::dnn::KDTree<Traits_>::update_n_elems(ssize_t, int)’ previously declared here
  128 | void hera::bt::dnn::KDTree<T>::update_n_elems(ssize_t idx, const int delta)
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:143:6: error: redefinition of ‘void hera::bt::dnn::KDTree<Traits_>::increase_n_elems(ssize_t)’
  143 | void hera::bt::dnn::KDTree<T>::increase_n_elems(const ssize_t idx)
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:143:6: note: ‘void hera::bt::dnn::KDTree<Traits_>::increase_n_elems(ssize_t)’ previously declared here
  143 | void hera::bt::dnn::KDTree<T>::increase_n_elems(const ssize_t idx)
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:149:6: error: redefinition of ‘void hera::bt::dnn::KDTree<Traits_>::decrease_n_elems(ssize_t)’
  149 | void hera::bt::dnn::KDTree<T>::decrease_n_elems(const ssize_t idx)
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:149:6: note: ‘void hera::bt::dnn::KDTree<Traits_>::decrease_n_elems(ssize_t)’ previously declared here
  149 | void hera::bt::dnn::KDTree<T>::decrease_n_elems(const ssize_t idx)
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:155:6: error: redefinition of ‘void hera::bt::dnn::KDTree<Traits_>::init_n_elems()’
  155 | void hera::bt::dnn::KDTree<T>::init_n_elems()
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:155:6: note: ‘void hera::bt::dnn::KDTree<Traits_>::init_n_elems()’ previously declared here
  155 | void hera::bt::dnn::KDTree<T>::init_n_elems()
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:165:6: error: redefinition of ‘void hera::bt::dnn::KDTree<Traits_>::search(PointHandle, ResultsFunctor&) const’
  165 | void hera::bt::dnn::KDTree<T>::search(PointHandle q, ResultsFunctor& rf) const
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:165:6: note: ‘void hera::bt::dnn::KDTree<Traits_>::search(PointHandle, ResultsFunctor&) const’ previously declared here
  165 | void hera::bt::dnn::KDTree<T>::search(PointHandle q, ResultsFunctor& rf) const
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:230:51: error: redefinition of ‘hera::bt::dnn::KDTree<Traits_>::HandleDistance hera::bt::dnn::KDTree<Traits_>::find(PointHandle) const’
  230 | typename hera::bt::dnn::KDTree<T>::HandleDistance hera::bt::dnn::KDTree<T>::find(PointHandle q) const
      |                                                   ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:230:51: note: ‘hera::bt::dnn::KDTree<Traits_>::HandleDistance hera::bt::dnn::KDTree<Traits_>::find(PointHandle) const’ previously declared here
  230 | typename hera::bt::dnn::KDTree<T>::HandleDistance hera::bt::dnn::KDTree<T>::find(PointHandle q) const
      |                                                   ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:238:43: error: redefinition of ‘hera::bt::dnn::KDTree<Traits_>::Result hera::bt::dnn::KDTree<Traits_>::findR(PointHandle, DistanceType) const’
  238 | typename hera::bt::dnn::KDTree<T>::Result hera::bt::dnn::KDTree<T>::findR(PointHandle q, DistanceType r) const
      |                                           ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:238:43: note: ‘hera::bt::dnn::KDTree<Traits_>::Result hera::bt::dnn::KDTree<Traits_>::findR(PointHandle, DistanceType) const’ previously declared here
  238 | typename hera::bt::dnn::KDTree<T>::Result hera::bt::dnn::KDTree<T>::findR(PointHandle q, DistanceType r) const
      |                                           ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:247:43: error: redefinition of ‘hera::bt::dnn::KDTree<Traits_>::Result hera::bt::dnn::KDTree<Traits_>::findFirstR(PointHandle, DistanceType) const’
  247 | typename hera::bt::dnn::KDTree<T>::Result hera::bt::dnn::KDTree<T>::findFirstR(PointHandle q, DistanceType r) const
      |                                           ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:247:43: note: ‘hera::bt::dnn::KDTree<Traits_>::Result hera::bt::dnn::KDTree<Traits_>::findFirstR(PointHandle, DistanceType) const’ previously declared here
  247 | typename hera::bt::dnn::KDTree<T>::Result hera::bt::dnn::KDTree<T>::findFirstR(PointHandle q, DistanceType r) const
      |                                           ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:255:43: error: redefinition of ‘hera::bt::dnn::KDTree<Traits_>::Result hera::bt::dnn::KDTree<Traits_>::findK(PointHandle, size_t) const’
  255 | typename hera::bt::dnn::KDTree<T>::Result hera::bt::dnn::KDTree<T>::findK(PointHandle q, size_t k) const
      |                                           ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:255:43: note: ‘hera::bt::dnn::KDTree<Traits_>::Result hera::bt::dnn::KDTree<Traits_>::findK(PointHandle, size_t) const’ previously declared here
  255 | typename hera::bt::dnn::KDTree<T>::Result hera::bt::dnn::KDTree<T>::findK(PointHandle q, size_t k) const
      |                                           ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:265:34: error: redefinition of ‘struct hera::bt::dnn::KDTree<Traits_>::CoordinateComparison’
  265 | struct hera::bt::dnn::KDTree<T>::CoordinateComparison
      |                                  ^~~~~~~~~~~~~~~~~~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:265:34: note: previous definition of ‘struct hera::bt::dnn::KDTree<Traits_>::CoordinateComparison’
  265 | struct hera::bt::dnn::KDTree<T>::CoordinateComparison
      |                                  ^~~~~~~~~~~~~~~~~~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:282:6: error: redefinition of ‘void hera::bt::dnn::KDTree<Traits_>::delete_point(size_t)’
  282 | void hera::bt::dnn::KDTree<T>::delete_point(const size_t idx)
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:282:6: note: ‘void hera::bt::dnn::KDTree<Traits_>::delete_point(size_t)’ previously declared here
  282 | void hera::bt::dnn::KDTree<T>::delete_point(const size_t idx)
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:292:6: error: redefinition of ‘void hera::bt::dnn::KDTree<Traits_>::delete_point(PointHandle)’
  292 | void hera::bt::dnn::KDTree<T>::delete_point(PointHandle p)
      |      ^~~~
/usr/include/hera/bottleneck/dnn/local/kd-tree.hpp:292:6: note: ‘void hera::bt::dnn::KDTree<Traits_>::delete_point(PointHandle)’ previously declared here
  292 | void hera::bt::dnn::KDTree<T>::delete_point(PointHandle p)
      |      ^~~~
In file included from /tmp/Y8VHGeLc2q/dump1.h:26:
/usr/include/hera/bottleneck/dnn/parallel/utils.h:14:10: error: variable or field ‘shuffle’ declared void
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |          ^~~~~~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:14:18: error: ‘mpi’ has not been declared
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                  ^~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:14:37: error: ‘world’ was not declared in this scope
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                     ^~~~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:14:54: error: expected primary-expression before ‘&’ token
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                                      ^
/usr/include/hera/bottleneck/dnn/parallel/utils.h:14:56: error: ‘data’ was not declared in this scope; did you mean ‘std::data’?
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                                        ^~~~
      |                                                        std::data
In file included from /usr/include/c++/12/vector:67,
                 from /usr/include/hera/bottleneck/basic_defs_bt.h:37:
/usr/include/c++/12/bits/range_access.h:343:5: note: ‘std::data’ declared here
  343 |     data(initializer_list<_Tp> __il) noexcept
      |     ^~~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:14:69: error: expected primary-expression before ‘&’ token
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                                                     ^
/usr/include/hera/bottleneck/dnn/parallel/utils.h:14:71: error: ‘rng’ was not declared in this scope
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                                                       ^~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:14:76: error: expected primary-expression before ‘const’
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                                                            ^~~~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:14:112: error: expected primary-expression before ‘empty’
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                                                                                                ^~~~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:17:10: error: variable or field ‘shuffle’ declared void
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |          ^~~~~~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:17:18: error: ‘mpi’ has not been declared
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |                  ^~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:17:37: error: ‘world’ was not declared in this scope
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |                                     ^~~~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:17:54: error: expected primary-expression before ‘&’ token
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |                                                      ^
/usr/include/hera/bottleneck/dnn/parallel/utils.h:17:56: error: ‘data’ was not declared in this scope; did you mean ‘std::data’?
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |                                                        ^~~~
      |                                                        std::data
/usr/include/c++/12/bits/range_access.h:343:5: note: ‘std::data’ declared here
  343 |     data(initializer_list<_Tp> __il) noexcept
      |     ^~~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:17:69: error: expected primary-expression before ‘&’ token
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |                                                                     ^
/usr/include/hera/bottleneck/dnn/parallel/utils.h:17:71: error: ‘rng’ was not declared in this scope
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |                                                                       ^~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:28:1: error: variable or field ‘shuffle’ declared void
   28 | hera::bt::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      | ^~~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:28:24: error: ‘mpi’ has not been declared
   28 | hera::bt::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                        ^~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:28:43: error: ‘world’ was not declared in this scope
   28 | hera::bt::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                           ^~~~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:28:60: error: expected primary-expression before ‘&’ token
   28 | hera::bt::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                                            ^
/usr/include/hera/bottleneck/dnn/parallel/utils.h:28:62: error: ‘data’ was not declared in this scope; did you mean ‘std::data’?
   28 | hera::bt::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                                              ^~~~
      |                                                              std::data
/usr/include/c++/12/bits/range_access.h:343:5: note: ‘std::data’ declared here
  343 |     data(initializer_list<_Tp> __il) noexcept
      |     ^~~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:28:75: error: expected primary-expression before ‘&’ token
   28 | hera::bt::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                                                           ^
/usr/include/hera/bottleneck/dnn/parallel/utils.h:28:77: error: ‘rng’ was not declared in this scope
   28 | hera::bt::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                                                             ^~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:28:82: error: expected primary-expression before ‘const’
   28 | hera::bt::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                                                                  ^~~~~
/usr/include/hera/bottleneck/dnn/parallel/utils.h:28:118: error: expected primary-expression before ‘empty’
   28 | hera::bt::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                                                                                                      ^~~~~
In file included from /usr/include/hera/wasserstein/basic_defs_ws.h:48,
                 from /usr/include/hera/wasserstein/auction_oracle_base.h:37,
                 from /usr/include/hera/wasserstein/auction_oracle.h:35,
                 from /tmp/Y8VHGeLc2q/dump1.h:29:
/usr/include/hera/wasserstein/hera_infinity.h:16:27: error: redefinition of ‘template<class Real> constexpr Real hera::get_infinity()’
   16 |     inline constexpr Real get_infinity()
      |                           ^~~~~~~~~~~~
/usr/include/hera/bottleneck/basic_defs_bt.h:57:10: note: ‘template<class Real> Real hera::get_infinity()’ previously declared here
   57 |     Real get_infinity()
      |          ^~~~~~~~~~~~
In file included from /tmp/Y8VHGeLc2q/dump1.h:38:
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:50:27: error: ‘IdxValPair’ does not name a type
   50 |     bool operator()(const IdxValPair<T>& a, const IdxValPair<T>& b) const
      |                           ^~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:50:37: error: expected ‘,’ or ‘...’ before ‘<’ token
   50 |     bool operator()(const IdxValPair<T>& a, const IdxValPair<T>& b) const
      |                                     ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h: In member function ‘bool ws::CompPairsBySecondStruct<T>::operator()(int) const’:
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:52:16: error: ‘a’ was not declared in this scope
   52 |         return a.second < b.second;
      |                ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:52:27: error: ‘b’ was not declared in this scope
   52 |         return a.second < b.second;
      |                           ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h: At global scope:
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:59:27: error: ‘IdxValPair’ does not name a type
   59 |     bool operator()(const IdxValPair<T>& a, const IdxValPair<T>& b) const
      |                           ^~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:59:37: error: expected ‘,’ or ‘...’ before ‘<’ token
   59 |     bool operator()(const IdxValPair<T>& a, const IdxValPair<T>& b) const
      |                                     ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h: In member function ‘bool ws::CompPairsBySecondGreaterStruct<T>::operator()(int) const’:
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:61:16: error: ‘a’ was not declared in this scope
   61 |         return a.second > b.second;
      |                ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:61:27: error: ‘b’ was not declared in this scope
   61 |         return a.second > b.second;
      |                           ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h: At global scope:
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:67:27: error: ‘IdxValPair’ does not name a type
   67 |     bool operator()(const IdxValPair<T>& a, const IdxValPair<T>& b) const
      |                           ^~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:67:37: error: expected ‘,’ or ‘...’ before ‘<’ token
   67 |     bool operator()(const IdxValPair<T>& a, const IdxValPair<T>& b) const
      |                                     ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h: In member function ‘bool ws::CompPairsBySecondLexStruct<T>::operator()(int) const’:
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:69:16: error: ‘a’ was not declared in this scope
   69 |         return a.second < b.second or (a.second == b.second and a.first > b.first);
      |                ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:69:27: error: ‘b’ was not declared in this scope
   69 |         return a.second < b.second or (a.second == b.second and a.first > b.first);
      |                           ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h: At global scope:
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:75:27: error: ‘IdxValPair’ does not name a type
   75 |     bool operator()(const IdxValPair<T>& a, const IdxValPair<T>& b) const
      |                           ^~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:75:37: error: expected ‘,’ or ‘...’ before ‘<’ token
   75 |     bool operator()(const IdxValPair<T>& a, const IdxValPair<T>& b) const
      |                                     ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h: In member function ‘bool ws::CompPairsBySecondLexGreaterStruct<T>::operator()(int) const’:
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:77:16: error: ‘a’ was not declared in this scope
   77 |         return a.second > b.second or (a.second == b.second and a.first > b.first);
      |                ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:77:27: error: ‘b’ was not declared in this scope
   77 |         return a.second > b.second or (a.second == b.second and a.first > b.first);
      |                           ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h: At global scope:
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:81:33: error: ‘IdxType’ was not declared in this scope; did you mean ‘hera::ws::IdxType’?
   81 | using ItemsTimePair = std::pair<IdxType, int>;
      |                                 ^~~~~~~
      |                                 hera::ws::IdxType
/usr/include/hera/wasserstein/basic_defs_ws.h:94:11: note: ‘hera::ws::IdxType’ declared here
   94 |     using IdxType = int;
      |           ^~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:81:45: error: template argument 1 is invalid
   81 | using ItemsTimePair = std::pair<IdxType, int>;
      |                                             ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:82:30: error: ‘ItemsTimePair’ was not declared in this scope
   82 | using UpdateList = std::list<ItemsTimePair>;
      |                              ^~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:82:43: error: template argument 1 is invalid
   82 | using UpdateList = std::list<ItemsTimePair>;
      |                                           ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:82:43: error: template argument 2 is invalid
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:83:24: error: ‘UpdateList’ does not name a type
   83 | using UpdateListIter = UpdateList::iterator;
      |                        ^~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:88:44: error: ‘IdxValPair’ was not declared in this scope; did you mean ‘hera::ws::IdxValPair’?
   88 | using LossesHeap = boost::heap::d_ary_heap<IdxValPair<Real>, boost::heap::arity<2>, boost::heap::mutable_<true>, boost::heap::compare<CompPairsBySecondGreaterStruct<Real>>>;
      |                                            ^~~~~~~~~~
      |                                            hera::ws::IdxValPair
/usr/include/hera/wasserstein/basic_defs_ws.h:99:11: note: ‘hera::ws::IdxValPair’ declared here
   99 |     using IdxValPair = std::pair<IdxType, Real>;
      |           ^~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:88:59: error: template argument 1 is invalid
   88 | using LossesHeap = boost::heap::d_ary_heap<IdxValPair<Real>, boost::heap::arity<2>, boost::heap::mutable_<true>, boost::heap::compare<CompPairsBySecondGreaterStruct<Real>>>;
      |                                                           ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:142:59: error: expected template-name before ‘<’ token
  142 | struct AuctionOracleLazyHeapRestricted : AuctionOracleBase<Real> {
      |                                                           ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:142:59: error: expected ‘{’ before ‘<’ token
In file included from /tmp/Y8VHGeLc2q/dump1.h:39:
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:90: error: ‘DiagramPoint’ was not declared in this scope
   49 | AuctionOracleLazyHeapRestricted<Real>::AuctionOracleLazyHeapRestricted(const std::vector<DiagramPoint<Real>>& _bidders,
      |                                                                                          ^~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:90: note: suggested alternatives:
/usr/include/hera/bottleneck/basic_defs_bt.h:104:16: note:   ‘hera::bt::DiagramPoint’
  104 |         struct DiagramPoint
      |                ^~~~~~~~~~~~
/usr/include/hera/wasserstein/basic_defs_ws.h:143:12: note:   ‘hera::ws::DiagramPoint’
  143 |     struct DiagramPoint
      |            ^~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:103: error: template argument 1 is invalid
   49 | AuctionOracleLazyHeapRestricted<Real>::AuctionOracleLazyHeapRestricted(const std::vector<DiagramPoint<Real>>& _bidders,
      |                                                                                                       ^~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:103: error: template argument 2 is invalid
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:90: error: ‘DiagramPoint’ was not declared in this scope
   49 | AuctionOracleLazyHeapRestricted<Real>::AuctionOracleLazyHeapRestricted(const std::vector<DiagramPoint<Real>>& _bidders,
      |                                                                                          ^~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:90: note: suggested alternatives:
/usr/include/hera/bottleneck/basic_defs_bt.h:104:16: note:   ‘hera::bt::DiagramPoint’
  104 |         struct DiagramPoint
      |                ^~~~~~~~~~~~
/usr/include/hera/wasserstein/basic_defs_ws.h:143:12: note:   ‘hera::ws::DiagramPoint’
  143 |     struct DiagramPoint
      |            ^~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:107: error: template argument 1 is invalid
   49 | AuctionOracleLazyHeapRestricted<Real>::AuctionOracleLazyHeapRestricted(const std::vector<DiagramPoint<Real>>& _bidders,
      |                                                                                                           ^~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:107: error: template argument 2 is invalid
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:90: error: ‘DiagramPoint’ was not declared in this scope
   49 | AuctionOracleLazyHeapRestricted<Real>::AuctionOracleLazyHeapRestricted(const std::vector<DiagramPoint<Real>>& _bidders,
      |                                                                                          ^~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:90: note: suggested alternatives:
/usr/include/hera/bottleneck/basic_defs_bt.h:104:16: note:   ‘hera::bt::DiagramPoint’
  104 |         struct DiagramPoint
      |                ^~~~~~~~~~~~
/usr/include/hera/wasserstein/basic_defs_ws.h:143:12: note:   ‘hera::ws::DiagramPoint’
  143 |     struct DiagramPoint
      |            ^~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:107: error: template argument 1 is invalid
   49 | AuctionOracleLazyHeapRestricted<Real>::AuctionOracleLazyHeapRestricted(const std::vector<DiagramPoint<Real>>& _bidders,
      |                                                                                                           ^~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:107: error: template argument 2 is invalid
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:78: error: invalid template-id
   49 | AuctionOracleLazyHeapRestricted<Real>::AuctionOracleLazyHeapRestricted(const std::vector<DiagramPoint<Real>>& _bidders,
      |                                                                              ^~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:90: error: ‘DiagramPoint’ was not declared in this scope
   49 | AuctionOracleLazyHeapRestricted<Real>::AuctionOracleLazyHeapRestricted(const std::vector<DiagramPoint<Real>>& _bidders,
      |                                                                                          ^~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:90: note: suggested alternatives:
/usr/include/hera/bottleneck/basic_defs_bt.h:104:16: note:   ‘hera::bt::DiagramPoint’
  104 |         struct DiagramPoint
      |                ^~~~~~~~~~~~
/usr/include/hera/wasserstein/basic_defs_ws.h:143:12: note:   ‘hera::ws::DiagramPoint’
  143 |     struct DiagramPoint
      |            ^~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:49:71: error: expected constructor, destructor, or type conversion before ‘(’ token
   49 | AuctionOracleLazyHeapRestricted<Real>::AuctionOracleLazyHeapRestricted(const std::vector<DiagramPoint<Real>>& _bidders,
      |                                                                       ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:95:6: error: variable or field ‘update_queue_for_bidder’ declared void
   95 | void AuctionOracleLazyHeapRestricted<Real>::update_queue_for_bidder(IdxType bidder_idx)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:95:69: error: ‘IdxType’ was not declared in this scope; did you mean ‘hera::ws::IdxType’?
   95 | void AuctionOracleLazyHeapRestricted<Real>::update_queue_for_bidder(IdxType bidder_idx)
      |                                                                     ^~~~~~~
      |                                                                     hera::ws::IdxType
/usr/include/hera/wasserstein/basic_defs_ws.h:94:11: note: ‘hera::ws::IdxType’ declared here
   94 |     using IdxType = int;
      |           ^~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:118:65: error: invalid use of incomplete type ‘struct ws::AuctionOracleLazyHeapRestricted<Real>’
  118 | void AuctionOracleLazyHeapRestricted<Real>::fill_in_losses_heap()
      |                                                                 ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:142:8: note: declaration of ‘struct ws::AuctionOracleLazyHeapRestricted<Real>’
  142 | struct AuctionOracleLazyHeapRestricted : AuctionOracleBase<Real> {
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:157:73: error: invalid use of incomplete type ‘struct ws::AuctionOracleLazyHeapRestricted<Real>’
  157 | AuctionOracleLazyHeapRestricted<Real>::~AuctionOracleLazyHeapRestricted()
      |                                                                         ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:142:8: note: declaration of ‘struct ws::AuctionOracleLazyHeapRestricted<Real>’
  142 | struct AuctionOracleLazyHeapRestricted : AuctionOracleBase<Real> {
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:166:6: error: variable or field ‘set_price’ declared void
  166 | void AuctionOracleLazyHeapRestricted<Real>::set_price(IdxType item_idx, Real new_price)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:166:55: error: ‘IdxType’ was not declared in this scope; did you mean ‘hera::ws::IdxType’?
  166 | void AuctionOracleLazyHeapRestricted<Real>::set_price(IdxType item_idx, Real new_price)
      |                                                       ^~~~~~~
      |                                                       hera::ws::IdxType
/usr/include/hera/wasserstein/basic_defs_ws.h:94:11: note: ‘hera::ws::IdxType’ declared here
   94 |     using IdxType = int;
      |           ^~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:166:78: error: expected primary-expression before ‘new_price’
  166 | void AuctionOracleLazyHeapRestricted<Real>::set_price(IdxType item_idx, Real new_price)
      |                                                                              ^~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:189:59: error: invalid use of incomplete type ‘struct ws::AuctionOracleLazyHeapRestricted<Real>’
  189 | void AuctionOracleLazyHeapRestricted<Real>::adjust_prices()
      |                                                           ^
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.h:142:8: note: declaration of ‘struct ws::AuctionOracleLazyHeapRestricted<Real>’
  142 | struct AuctionOracleLazyHeapRestricted : AuctionOracleBase<Real> {
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:195:1: error: ‘DebugOptimalBid’ does not name a type
  195 | DebugOptimalBid<Real> AuctionOracleLazyHeapRestricted<Real>::get_optimal_bid_debug(IdxType bidder_idx)
      | ^~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_oracle_lazy_heap.hpp:312:1: error: ‘IdxValPair’ does not name a type
  312 | IdxValPair<Real> AuctionOracleLazyHeapRestricted<Real>::get_optimal_bid(const IdxType bidder_idx)
      | ^~~~~~~~~~
In file included from /tmp/Y8VHGeLc2q/dump1.h:45:
/usr/include/hera/wasserstein/auction_runner_gs.hpp:55:1: error: redefinition of ‘hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::AuctionRunnerGS(const PC&, const PC&, const hera::AuctionParams<Real>&)’
   55 | AuctionRunnerGS<R, AO, PC>::AuctionRunnerGS(const PC& A,
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/hera/wasserstein/auction_runner_gs.h:106,
                 from /tmp/Y8VHGeLc2q/dump1.h:44:
/usr/include/hera/wasserstein/auction_runner_gs.hpp:55:1: note: ‘hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::AuctionRunnerGS(const PC&, const PC&, const hera::AuctionParams<Real>&)’ previously declared here
   55 | AuctionRunnerGS<R, AO, PC>::AuctionRunnerGS(const PC& A,
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:82:6: error: redefinition of ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::assign_item_to_bidder(hera::ws::IdxType, hera::ws::IdxType)’
   82 | void AuctionRunnerGS<R, AO, PC>::assign_item_to_bidder(IdxType item_idx, IdxType bidder_idx)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:82:6: note: ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::assign_item_to_bidder(hera::ws::IdxType, hera::ws::IdxType)’ previously declared here
   82 | void AuctionRunnerGS<R, AO, PC>::assign_item_to_bidder(IdxType item_idx, IdxType bidder_idx)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:105:6: error: redefinition of ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::flush_assignment()’
  105 | void AuctionRunnerGS<R, AO, PC>::flush_assignment()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:105:6: note: ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::flush_assignment()’ previously declared here
  105 | void AuctionRunnerGS<R, AO, PC>::flush_assignment()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:126:6: error: redefinition of ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::run_auction_phases(int, Real)’
  126 | void AuctionRunnerGS<R, AO, PC>::run_auction_phases(const int max_num_phases, const Real _initial_epsilon)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:126:6: note: ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::run_auction_phases(int, Real)’ previously declared here
  126 | void AuctionRunnerGS<R, AO, PC>::run_auction_phases(const int max_num_phases, const Real _initial_epsilon)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:162:6: error: redefinition of ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::run_auction()’
  162 | void AuctionRunnerGS<R, AO, PC>::run_auction()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:162:6: note: ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::run_auction()’ previously declared here
  162 | void AuctionRunnerGS<R, AO, PC>::run_auction()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:186:6: error: redefinition of ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::run_auction_phase()’
  186 | void AuctionRunnerGS<R, AO, PC>::run_auction_phase()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:186:6: note: ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::run_auction_phase()’ previously declared here
  186 | void AuctionRunnerGS<R, AO, PC>::run_auction_phase()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:219:3: error: redefinition of ‘R hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::get_item_bidder_cost(size_t, size_t, bool) const’
  219 | R AuctionRunnerGS<R, AO, PC>::get_item_bidder_cost(const size_t item_idx, const size_t bidder_idx, const bool tolerate_invalid_idx) const
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:219:3: note: ‘R hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::get_item_bidder_cost(size_t, size_t, bool) const’ previously declared here
  219 | R AuctionRunnerGS<R, AO, PC>::get_item_bidder_cost(const size_t item_idx, const size_t bidder_idx, const bool tolerate_invalid_idx) const
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:232:3: error: redefinition of ‘R hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::getDistanceToQthPowerInternal()’
  232 | R AuctionRunnerGS<R, AO, PC>::getDistanceToQthPowerInternal()
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:232:3: note: ‘R hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::getDistanceToQthPowerInternal()’ previously declared here
  232 | R AuctionRunnerGS<R, AO, PC>::getDistanceToQthPowerInternal()
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:246:3: error: redefinition of ‘R hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::get_wasserstein_distance()’
  246 | R AuctionRunnerGS<R, AO, PC>::get_wasserstein_distance()
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:246:3: note: ‘R hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::get_wasserstein_distance()’ previously declared here
  246 | R AuctionRunnerGS<R, AO, PC>::get_wasserstein_distance()
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:253:3: error: redefinition of ‘R hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::get_wasserstein_cost()’
  253 | R AuctionRunnerGS<R, AO, PC>::get_wasserstein_cost()
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:253:3: note: ‘R hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::get_wasserstein_cost()’ previously declared here
  253 | R AuctionRunnerGS<R, AO, PC>::get_wasserstein_cost()
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:264:6: error: redefinition of ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::print_debug()’
  264 | void AuctionRunnerGS<R, AO, PC>::print_debug()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:264:6: note: ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::print_debug()’ previously declared here
  264 | void AuctionRunnerGS<R, AO, PC>::print_debug()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:290:6: error: redefinition of ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::sanity_check()’
  290 | void AuctionRunnerGS<R, AO, PC>::sanity_check()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:290:6: note: ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::sanity_check()’ previously declared here
  290 | void AuctionRunnerGS<R, AO, PC>::sanity_check()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:354:6: error: redefinition of ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::print_matching()’
  354 | void AuctionRunnerGS<R, AO, PC>::print_matching()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs.hpp:354:6: note: ‘void hera::ws::AuctionRunnerGS<RealType_, AuctionOracle_, PointContainer_>::print_matching()’ previously declared here
  354 | void AuctionRunnerGS<R, AO, PC>::print_matching()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /tmp/Y8VHGeLc2q/dump1.h:47:
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:54:15: error: redefinition of ‘template<class R, class AO> std::ostream& hera::ws::operator<<(std::ostream&, const AuctionRunnerGaussSeidelSingleDiag<R, AO>&)’
   54 | std::ostream& operator<<(std::ostream& s, const AuctionRunnerGaussSeidelSingleDiag<R, AO>& ar)
      |               ^~~~~~~~
In file included from /usr/include/hera/wasserstein/auction_runner_gs_single_diag.h:136,
                 from /tmp/Y8VHGeLc2q/dump1.h:46:
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:54:15: note: ‘template<class R, class AO> std::ostream& hera::ws::operator<<(std::ostream&, const AuctionRunnerGaussSeidelSingleDiag<R, AO>&)’ previously declared here
   54 | std::ostream& operator<<(std::ostream& s, const AuctionRunnerGaussSeidelSingleDiag<R, AO>& ar)
      |               ^~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:79:1: error: redefinition of ‘hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::AuctionRunnerGaussSeidelSingleDiag(const DgmPointVec&, const DgmPointVec&, Real, Real, Real, Real, Real, int)’
   79 | AuctionRunnerGaussSeidelSingleDiag<R, AO>::AuctionRunnerGaussSeidelSingleDiag(const DgmPointVec& A,
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:79:1: note: ‘hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::AuctionRunnerGaussSeidelSingleDiag(const DgmPointVec&, const DgmPointVec&, Real, Real, Real, Real, Real, int)’ previously declared here
   79 | AuctionRunnerGaussSeidelSingleDiag<R, AO>::AuctionRunnerGaussSeidelSingleDiag(const DgmPointVec& A,
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:121:6: error: redefinition of ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::process_diagonal_bid(const DiagonalBidR&)’
  121 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::process_diagonal_bid(const DiagonalBidR& bid)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:121:6: note: ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::process_diagonal_bid(const DiagonalBidR&)’ previously declared here
  121 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::process_diagonal_bid(const DiagonalBidR& bid)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:182:6: error: redefinition of ‘bool hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::is_bidder_diagonal(size_t) const’
  182 | bool AuctionRunnerGaussSeidelSingleDiag<R, AO>::is_bidder_diagonal(const size_t bidder_idx) const
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:182:6: note: ‘bool hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::is_bidder_diagonal(size_t) const’ previously declared here
  182 | bool AuctionRunnerGaussSeidelSingleDiag<R, AO>::is_bidder_diagonal(const size_t bidder_idx) const
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:188:6: error: redefinition of ‘bool hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::is_bidder_normal(size_t) const’
  188 | bool AuctionRunnerGaussSeidelSingleDiag<R, AO>::is_bidder_normal(const size_t bidder_idx) const
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:188:6: note: ‘bool hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::is_bidder_normal(size_t) const’ previously declared here
  188 | bool AuctionRunnerGaussSeidelSingleDiag<R, AO>::is_bidder_normal(const size_t bidder_idx) const
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:194:6: error: redefinition of ‘bool hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::is_item_diagonal(size_t) const’
  194 | bool AuctionRunnerGaussSeidelSingleDiag<R, AO>::is_item_diagonal(const size_t item_idx) const
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:194:6: note: ‘bool hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::is_item_diagonal(size_t) const’ previously declared here
  194 | bool AuctionRunnerGaussSeidelSingleDiag<R, AO>::is_item_diagonal(const size_t item_idx) const
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:200:6: error: redefinition of ‘bool hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::is_item_normal(size_t) const’
  200 | bool AuctionRunnerGaussSeidelSingleDiag<R, AO>::is_item_normal(const size_t item_idx) const
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:200:6: note: ‘bool hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::is_item_normal(size_t) const’ previously declared here
  200 | bool AuctionRunnerGaussSeidelSingleDiag<R, AO>::is_item_normal(const size_t item_idx) const
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:206:6: error: redefinition of ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::assign_item_to_bidder(hera::ws::IdxType, hera::ws::IdxType, hera::ws::IdxType, bool, bool, bool, R)’
  206 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::assign_item_to_bidder(const IdxType item_idx,
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:206:6: note: ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::assign_item_to_bidder(hera::ws::IdxType, hera::ws::IdxType, hera::ws::IdxType, bool, bool, bool, R)’ previously declared here
  206 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::assign_item_to_bidder(const IdxType item_idx,
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:302:6: error: redefinition of ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::flush_assignment()’
  302 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::flush_assignment()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:302:6: note: ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::flush_assignment()’ previously declared here
  302 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::flush_assignment()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:330:6: error: redefinition of ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::run_auction_phases(int, Real)’
  330 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::run_auction_phases(const int max_num_phases, const Real _initial_epsilon)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:330:6: note: ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::run_auction_phases(int, Real)’ previously declared here
  330 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::run_auction_phases(const int max_num_phases, const Real _initial_epsilon)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:367:6: error: redefinition of ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::run_auction()’
  367 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::run_auction()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:367:6: note: ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::run_auction()’ previously declared here
  367 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::run_auction()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:381:11: error: redefinition of ‘hera::ws::OwnerType hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::get_owner_type(size_t) const’
  381 | OwnerType AuctionRunnerGaussSeidelSingleDiag<R, AO>::get_owner_type(size_t bidder_idx) const
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:381:11: note: ‘hera::ws::OwnerType hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::get_owner_type(size_t) const’ previously declared here
  381 | OwnerType AuctionRunnerGaussSeidelSingleDiag<R, AO>::get_owner_type(size_t bidder_idx) const
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:393:6: error: redefinition of ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::run_auction_phase()’
  393 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::run_auction_phase()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:393:6: note: ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::run_auction_phase()’ previously declared here
  393 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::run_auction_phase()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:445:3: error: redefinition of ‘R hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::get_item_bidder_cost(size_t, size_t, bool) const’
  445 | R AuctionRunnerGaussSeidelSingleDiag<R, AO>::get_item_bidder_cost(size_t item_idx, size_t bidder_idx, const bool tolerate_invalid_idx) const
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:445:3: note: ‘R hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::get_item_bidder_cost(size_t, size_t, bool) const’ previously declared here
  445 | R AuctionRunnerGaussSeidelSingleDiag<R, AO>::get_item_bidder_cost(size_t item_idx, size_t bidder_idx, const bool tolerate_invalid_idx) const
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:465:3: error: redefinition of ‘R hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::getDistanceToQthPowerInternal()’
  465 | R AuctionRunnerGaussSeidelSingleDiag<R, AO>::getDistanceToQthPowerInternal()
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:465:3: note: ‘R hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::getDistanceToQthPowerInternal()’ previously declared here
  465 | R AuctionRunnerGaussSeidelSingleDiag<R, AO>::getDistanceToQthPowerInternal()
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:477:3: error: redefinition of ‘R hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::get_wasserstein_distance()’
  477 | R AuctionRunnerGaussSeidelSingleDiag<R, AO>::get_wasserstein_distance()
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:477:3: note: ‘R hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::get_wasserstein_distance()’ previously declared here
  477 | R AuctionRunnerGaussSeidelSingleDiag<R, AO>::get_wasserstein_distance()
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:483:3: error: redefinition of ‘R hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::get_wasserstein_cost()’
  483 | R AuctionRunnerGaussSeidelSingleDiag<R, AO>::get_wasserstein_cost()
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:483:3: note: ‘R hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::get_wasserstein_cost()’ previously declared here
  483 | R AuctionRunnerGaussSeidelSingleDiag<R, AO>::get_wasserstein_cost()
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:495:6: error: redefinition of ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::print_debug()’
  495 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::print_debug()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:495:6: note: ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::print_debug()’ previously declared here
  495 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::print_debug()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:520:6: error: redefinition of ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::sanity_check()’
  520 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::sanity_check()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:520:6: note: ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::sanity_check()’ previously declared here
  520 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::sanity_check()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:612:6: error: redefinition of ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::print_matching()’
  612 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::print_matching()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_gs_single_diag.hpp:612:6: note: ‘void hera::ws::AuctionRunnerGaussSeidelSingleDiag<RealType_, AuctionOracle_>::print_matching()’ previously declared here
  612 | void AuctionRunnerGaussSeidelSingleDiag<R, AO>::print_matching()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /tmp/Y8VHGeLc2q/dump1.h:58:
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:12:1: error: redefinition of ‘hera::ws::dnn::KDTree<Traits_>::KDTree(const Traits&, HandleContainer&&, double)’
   12 | hera::ws::dnn::KDTree<T>::
      | ^~~~
In file included from /usr/include/hera/wasserstein/dnn/local/kd-tree.h:95,
                 from /usr/include/hera/wasserstein/auction_oracle_kdtree_restricted.h:44,
                 from /usr/include/hera/wasserstein/auction_oracle.h:36:
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:12:1: note: ‘hera::ws::dnn::KDTree<Traits_>::KDTree(const Traits&, HandleContainer&&, double)’ previously declared here
   12 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:19:1: error: redefinition of ‘hera::ws::dnn::KDTree<Traits_>::KDTree(const Traits&, const Range&, double)’
   19 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:19:1: note: ‘hera::ws::dnn::KDTree<Traits_>::KDTree(const Traits&, const Range&, double)’ previously declared here
   19 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:30:1: error: redefinition of ‘void hera::ws::dnn::KDTree<Traits_>::init(const Range&)’
   30 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:30:1: note: ‘void hera::ws::dnn::KDTree<Traits_>::init(const Range&)’ previously declared here
   30 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:44:1: error: redefinition of ‘void hera::ws::dnn::KDTree<Traits_>::init()’
   44 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:44:1: note: ‘void hera::ws::dnn::KDTree<Traits_>::init()’ previously declared here
   44 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:64:27: error: redefinition of ‘struct hera::ws::dnn::KDTree<Traits_>::OrderTree’
   64 | hera::ws::dnn::KDTree<T>::OrderTree
      |                           ^~~~~~~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:64:27: note: previous definition of ‘struct hera::ws::dnn::KDTree<Traits_>::OrderTree’
   64 | hera::ws::dnn::KDTree<T>::OrderTree
      |                           ^~~~~~~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:117:1: error: redefinition of ‘void hera::ws::dnn::KDTree<Traits_>::search(PointHandle, ResultsFunctor&) const’
  117 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:117:1: note: ‘void hera::ws::dnn::KDTree<Traits_>::search(PointHandle, ResultsFunctor&) const’ previously declared here
  117 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:168:1: error: redefinition of ‘void hera::ws::dnn::KDTree<Traits_>::adjust_weights(DistanceType)’
  168 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:168:1: note: ‘void hera::ws::dnn::KDTree<Traits_>::adjust_weights(DistanceType)’ previously declared here
  168 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:181:1: error: redefinition of ‘void hera::ws::dnn::KDTree<Traits_>::change_weight(PointHandle, DistanceType)’
  181 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:181:1: note: ‘void hera::ws::dnn::KDTree<Traits_>::change_weight(PointHandle, DistanceType)’ previously declared here
  181 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:265:1: error: redefinition of ‘hera::ws::dnn::KDTree<Traits_>::HandleDistance hera::ws::dnn::KDTree<Traits_>::find(PointHandle) const’
  265 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:265:1: note: ‘hera::ws::dnn::KDTree<Traits_>::HandleDistance hera::ws::dnn::KDTree<Traits_>::find(PointHandle) const’ previously declared here
  265 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:275:1: error: redefinition of ‘hera::ws::dnn::KDTree<Traits_>::Result hera::ws::dnn::KDTree<Traits_>::findR(PointHandle, DistanceType) const’
  275 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:275:1: note: ‘hera::ws::dnn::KDTree<Traits_>::Result hera::ws::dnn::KDTree<Traits_>::findR(PointHandle, DistanceType) const’ previously declared here
  275 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:286:1: error: redefinition of ‘hera::ws::dnn::KDTree<Traits_>::Result hera::ws::dnn::KDTree<Traits_>::findK(PointHandle, size_t) const’
  286 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:286:1: note: ‘hera::ws::dnn::KDTree<Traits_>::Result hera::ws::dnn::KDTree<Traits_>::findK(PointHandle, size_t) const’ previously declared here
  286 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:297:34: error: redefinition of ‘struct hera::ws::dnn::KDTree<Traits_>::CoordinateComparison’
  297 | struct hera::ws::dnn::KDTree<T>::CoordinateComparison
      |                                  ^~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:297:34: note: previous definition of ‘struct hera::ws::dnn::KDTree<Traits_>::CoordinateComparison’
  297 | struct hera::ws::dnn::KDTree<T>::CoordinateComparison
      |                                  ^~~~~~~~~~~~~~~~~~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:315:1: error: redefinition of ‘void hera::ws::dnn::KDTree<Traits_>::printWeights()’
  315 | hera::ws::dnn::KDTree<T>::
      | ^~~~
/usr/include/hera/wasserstein/dnn/local/kd-tree.hpp:315:1: note: ‘void hera::ws::dnn::KDTree<Traits_>::printWeights()’ previously declared here
  315 | hera::ws::dnn::KDTree<T>::
      | ^~~~
In file included from /tmp/Y8VHGeLc2q/dump1.h:61:
/usr/include/hera/wasserstein/dnn/parallel/utils.h:14:10: error: variable or field ‘shuffle’ declared void
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |          ^~~~~~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:14:18: error: ‘mpi’ has not been declared
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                  ^~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:14:37: error: ‘world’ was not declared in this scope
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                     ^~~~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:14:54: error: expected primary-expression before ‘&’ token
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                                      ^
/usr/include/hera/wasserstein/dnn/parallel/utils.h:14:56: error: ‘data’ was not declared in this scope; did you mean ‘std::data’?
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                                        ^~~~
      |                                                        std::data
/usr/include/c++/12/bits/range_access.h:343:5: note: ‘std::data’ declared here
  343 |     data(initializer_list<_Tp> __il) noexcept
      |     ^~~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:14:69: error: expected primary-expression before ‘&’ token
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                                                     ^
/usr/include/hera/wasserstein/dnn/parallel/utils.h:14:71: error: ‘rng’ was not declared in this scope
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                                                       ^~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:14:76: error: expected primary-expression before ‘const’
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                                                            ^~~~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:14:112: error: expected primary-expression before ‘empty’
   14 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty = DataVector());
      |                                                                                                                ^~~~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:17:10: error: variable or field ‘shuffle’ declared void
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |          ^~~~~~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:17:18: error: ‘mpi’ has not been declared
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |                  ^~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:17:37: error: ‘world’ was not declared in this scope
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |                                     ^~~~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:17:54: error: expected primary-expression before ‘&’ token
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |                                                      ^
/usr/include/hera/wasserstein/dnn/parallel/utils.h:17:56: error: ‘data’ was not declared in this scope; did you mean ‘std::data’?
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |                                                        ^~~~
      |                                                        std::data
/usr/include/c++/12/bits/range_access.h:343:5: note: ‘std::data’ declared here
  343 |     data(initializer_list<_Tp> __il) noexcept
      |     ^~~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:17:69: error: expected primary-expression before ‘&’ token
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |                                                                     ^
/usr/include/hera/wasserstein/dnn/parallel/utils.h:17:71: error: ‘rng’ was not declared in this scope
   17 |     void shuffle(mpi::communicator& world, DataVector& data, RNGType& rng)
      |                                                                       ^~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:28:1: error: variable or field ‘shuffle’ declared void
   28 | hera::ws::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      | ^~~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:28:24: error: ‘mpi’ has not been declared
   28 | hera::ws::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                        ^~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:28:43: error: ‘world’ was not declared in this scope
   28 | hera::ws::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                           ^~~~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:28:60: error: expected primary-expression before ‘&’ token
   28 | hera::ws::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                                            ^
/usr/include/hera/wasserstein/dnn/parallel/utils.h:28:62: error: ‘data’ was not declared in this scope; did you mean ‘std::data’?
   28 | hera::ws::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                                              ^~~~
      |                                                              std::data
/usr/include/c++/12/bits/range_access.h:343:5: note: ‘std::data’ declared here
  343 |     data(initializer_list<_Tp> __il) noexcept
      |     ^~~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:28:75: error: expected primary-expression before ‘&’ token
   28 | hera::ws::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                                                           ^
/usr/include/hera/wasserstein/dnn/parallel/utils.h:28:77: error: ‘rng’ was not declared in this scope
   28 | hera::ws::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                                                             ^~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:28:82: error: expected primary-expression before ‘const’
   28 | hera::ws::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                                                                  ^~~~~
/usr/include/hera/wasserstein/dnn/parallel/utils.h:28:118: error: expected primary-expression before ‘empty’
   28 | hera::ws::dnn::shuffle(mpi::communicator& world, DataVector& data, RNGType& rng, const SwapFunctor& swap, DataVector empty)
      |                                                                                                                      ^~~~~
In file included from /tmp/Y8VHGeLc2q/dump1.h:65:
/usr/include/hera/wasserstein/wasserstein.h:48:32: error: redefinition of default argument for ‘class PointType_’
   48 | template<class PairContainer_, class PointType_ = typename std::remove_reference< decltype(*std::declval<PairContainer_>().begin())>::type >
      |                                ^~~~~
In file included from /usr/include/hera/bottleneck/bottleneck.h:39:
/usr/include/hera/bottleneck/diagram_traits.h:6:32: note: original definition appeared here
    6 | template<class PairContainer_, class PointType_ = typename std::remove_reference< decltype(*std::declval<PairContainer_>().begin())>::type >
      |                                ^~~~~
In file included from /usr/include/hera/wasserstein/auction_runner_jac.h:177,
                 from /tmp/Y8VHGeLc2q/dump1.h:48:
/usr/include/hera/wasserstein/auction_runner_jac.hpp: In instantiation of ‘hera::ws::AuctionRunnerJac<RealType_, AuctionOracle_, PointContainer_>::AuctionRunnerJac(const PointContainer&, const PointContainer&, const hera::AuctionParams<Real>&) [with RealType_ = double; AuctionOracle_ = hera::ws::AuctionOracleKDTreePureGeom<double, hera::ws::dnn::DynamicPointVector<double> >; PointContainer_ = hera::ws::dnn::DynamicPointVector<double>; PointContainer = hera::ws::dnn::DynamicPointVector<double>]’:
/usr/include/hera/wasserstein/wasserstein_pure_geom.hpp:71:83:   required from here
/usr/include/hera/wasserstein/auction_runner_jac.hpp:78:83: error: ‘const hera::ws::AuctionRunnerJac<double, hera::ws::AuctionOracleKDTreePureGeom<double, hera::ws::dnn::DynamicPointVector<double> >, hera::ws::dnn::DynamicPointVector<double> >::DgmPoint’ {aka ‘const struct hera::ws::dnn::DynamicPointVector<double>::PointType’} has no member named ‘persistence_lp’
   78 |                                                         return ps + std::pow(item.persistence_lp(params.internal_p), params.wasserstein_power);
      |                                                                              ~~~~~^~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_jac.hpp:85:87: error: ‘const hera::ws::AuctionRunnerJac<double, hera::ws::AuctionOracleKDTreePureGeom<double, hera::ws::dnn::DynamicPointVector<double> >, hera::ws::dnn::DynamicPointVector<double> >::DgmPoint’ {aka ‘const struct hera::ws::dnn::DynamicPointVector<double>::PointType’} has no member named ‘persistence_lp’
   85 |                                                           return ps + std::pow(bidder.persistence_lp(params.internal_p), params.wasserstein_power);
      |                                                                                ~~~~~~~^~~~~~~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_jac.hpp:97:19: error: ‘const struct hera::ws::dnn::DynamicPointVector<double>::PointType’ has no member named ‘is_normal’
   97 |             if (p.is_normal()) {
      |                 ~~^~~~~~~~~
/usr/include/hera/wasserstein/auction_runner_jac.hpp: In instantiation of ‘hera::ws::AuctionRunnerJac<RealType_, AuctionOracle_, PointContainer_>::Real hera::ws::AuctionRunnerJac<RealType_, AuctionOracle_, PointContainer_>::get_cost_to_diagonal(const DgmPoint&) const [with RealType_ = double; AuctionOracle_ = hera::ws::AuctionOracleKDTreePureGeom<double, hera::ws::dnn::DynamicPointVector<double> >; PointContainer_ = hera::ws::dnn::DynamicPointVector<double>; Real = double; DgmPoint = hera::ws::dnn::DynamicPointVector<double>::PointType]’:
/usr/include/hera/wasserstein/auction_runner_jac.hpp:392:43:   required from ‘void hera::ws::AuctionRunnerJac<RealType_, AuctionOracle_, PointContainer_>::remove_unassigned_bidder(size_t) [with RealType_ = double; AuctionOracle_ = hera::ws::AuctionOracleKDTreePureGeom<double, hera::ws::dnn::DynamicPointVector<double> >; PointContainer_ = hera::ws::dnn::DynamicPointVector<double>; size_t = unsigned int]’
/usr/include/hera/wasserstein/auction_runner_jac.hpp:150:9:   required from ‘void hera::ws::AuctionRunnerJac<RealType_, AuctionOracle_, PointContainer_>::assign_item_to_bidder(hera::ws::IdxType, hera::ws::IdxType) [with RealType_ = double; AuctionOracle_ = hera::ws::AuctionOracleKDTreePureGeom<double, hera::ws::dnn::DynamicPointVector<double> >; PointContainer_ = hera::ws::dnn::DynamicPointVector<double>; hera::ws::IdxType = int]’
/usr/include/hera/wasserstein/auction_runner_jac.hpp:345:13:   required from ‘void hera::ws::AuctionRunnerJac<RealType_, AuctionOracle_, PointContainer_>::run_auction() [with RealType_ = double; AuctionOracle_ = hera::ws::AuctionOracleKDTreePureGeom<double, hera::ws::dnn::DynamicPointVector<double> >; PointContainer_ = hera::ws::dnn::DynamicPointVector<double>]’
/usr/include/hera/wasserstein/wasserstein_pure_geom.hpp:72:28:   required from here
/usr/include/hera/wasserstein/auction_runner_jac.hpp:125:28: error: ‘const hera::ws::AuctionRunnerJac<double, hera::ws::AuctionOracleKDTreePureGeom<double, hera::ws::dnn::DynamicPointVector<double> >, hera::ws::dnn::DynamicPointVector<double> >::DgmPoint’ {aka ‘const struct hera::ws::dnn::DynamicPointVector<double>::PointType’} has no member named ‘persistence_lp’
  125 |         return std::pow(pt.persistence_lp(internal_p), wasserstein_power);
      |                         ~~~^~~~~~~~~~~~~~

