Compile [2024-11-16 12:16:25 UTC]: fail
"g++-12" -fvisibility-inlines-hidden -std=c++17 -fPIC -m64 -pthread -O0 -fno-inline -Wall -fvisibility=hidden -DBOOST_ALL_NO_LIB=1 -DBOOST_COBALT_USE_STD_PMR=1 -I".." -I"../libs/hana/test/_include" -I"/var/boost/run/boost_root/libs/assert/include" -I"/var/boost/run/boost_root/libs/core/include" -I"/var/boost/run/boost_root/libs/hana/include" -I"/var/boost/run/boost_root/libs/throw_exception/include" -I"/var/boost/run/boost_root/libs/tuple/include" -c -o "/var/boost/run/results/boost/bin.v2/libs/hana/test/test~ring.test/gcc-12~c++17/debug/x86_64/debug-symbols-off/threading-multi/visibility-hidden/ring.o" "../libs/hana/test/ring.cpp"
In file included from ../boost/hana/one.hpp:13,
from ../boost/hana/concept/ring.hpp:20,
from ../libs/hana/test/ring.cpp:6:
../boost/hana/fwd/one.hpp: In instantiation of 'struct boost::hana::one_impl<int, void>':
../boost/hana/core/default.hpp:26:9: required by substitution of 'template<class Method> struct boost::hana::is_default<Method, decltype ((void)(static_cast<boost::hana::default_>((*(Method*)(0)))))> [with Method = boost::hana::one_impl<int, void>]'
../boost/hana/concept/ring.hpp:27:62: required from 'struct boost::hana::Ring<int>'
../boost/hana/one.hpp:30:38: required from 'constexpr decltype(auto) boost::hana::one_t<R>::operator()() const [with R = int]'
../libs/hana/test/ring.cpp:20:33: required from here
../boost/hana/fwd/one.hpp:35:12: error: ambiguous template instantiation for 'struct boost::hana::one_impl<int, boost::hana::when<true> >'
35 | struct one_impl : one_impl<R, when<true>> { };
| ^~~~~~~~
../boost/hana/one.hpp:43:12: note: candidates are: 'template<class R, bool condition> struct boost::hana::one_impl<R, boost::hana::when<condition> > [with R = int; bool condition = true]'
43 | struct one_impl<R, when<condition>> : default_ {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../boost/hana/one.hpp:52:12: note: 'template<class T> struct boost::hana::one_impl<T, boost::hana::when<(std::is_arithmetic<_Tp>::value && (! std::is_same<bool, T>::value))> > [with T = int]'
52 | struct one_impl<T, when<std::is_arithmetic<T>::value &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53 | !std::is_same<bool, T>::value>> {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../boost/hana/fwd/one.hpp:35:12: error: invalid use of incomplete type 'struct boost::hana::one_impl<int, boost::hana::when<true> >'
35 | struct one_impl : one_impl<R, when<true>> { };
| ^~~~~~~~
../boost/hana/fwd/one.hpp:35:12: note: declaration of 'struct boost::hana::one_impl<int, boost::hana::when<true> >'
In file included from ../boost/hana/detail/operators/arithmetic.hpp:18,
from ../boost/hana/bool.hpp:19,
from ../boost/hana/eval_if.hpp:15,
from ../boost/hana/concept/logical.hpp:19,
from ../boost/hana/if.hpp:15,
from ../boost/hana/assert.hpp:16,
from ../libs/hana/test/ring.cpp:5:
../boost/hana/fwd/mult.hpp: In instantiation of 'struct boost::hana::mult_impl<int, int, void>':
../boost/hana/core/default.hpp:26:9: required by substitution of 'template<class Method> struct boost::hana::is_default<Method, decltype ((void)(static_cast<boost::hana::default_>((*(Method*)(0)))))> [with Method = boost::hana::mult_impl<int, int, void>]'
../boost/hana/concept/ring.hpp:29:63: required from 'struct boost::hana::Ring<int>'
../boost/hana/one.hpp:30:38: required from 'constexpr decltype(auto) boost::hana::one_t<R>::operator()() const [with R = int]'
../libs/hana/test/ring.cpp:20:33: required from here
../boost/hana/fwd/mult.hpp:52:12: error: ambiguous template instantiation for 'struct boost::hana::mult_impl<int, int, boost::hana::when<true> >'
52 | struct mult_impl : mult_impl<T, U, when<true>> { };
| ^~~~~~~~~
In file included from ../boost/hana/concept/ring.hpp:19:
../boost/hana/mult.hpp:56:12: note: candidates are: 'template<class T, class U, bool condition> struct boost::hana::mult_impl<T, U, boost::hana::when<condition> > [with T = int; U = int; bool condition = true]'
56 | struct mult_impl<T, U, when<condition>> : default_ {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../boost/hana/mult.hpp:78:12: note: 'template<class T> struct boost::hana::mult_impl<T, T, boost::hana::when<(std::is_arithmetic<_Tp>::value && (! std::is_same<bool, T>::value))> > [with T = int]'
78 | struct mult_impl<T, T, when<std::is_arithmetic<T>::value &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79 | !std::is_same<bool, T>::value>> {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../boost/hana/fwd/mult.hpp:52:12: error: invalid use of incomplete type 'struct boost::hana::mult_impl<int, int, boost::hana::when<true> >'
52 | struct mult_impl : mult_impl<T, U, when<true>> { };
| ^~~~~~~~~
../boost/hana/fwd/mult.hpp:52:12: note: declaration of 'struct boost::hana::mult_impl<int, int, boost::hana::when<true> >'
../boost/hana/one.hpp: In instantiation of 'constexpr decltype(auto) boost::hana::one_t<R>::operator()() const [with R = int]':
../libs/hana/test/ring.cpp:20:33: required from here
../boost/hana/one.hpp:38:26: error: 'apply' is not a member of 'One' {aka 'boost::hana::one_impl<int, void>'}
38 | return One::apply();
| ~~~~~~~~~~^~
../boost/hana/mult.hpp: In instantiation of 'constexpr decltype(auto) boost::hana::mult_t::operator()(X&&, Y&&) const [with X = int; Y = int]':
../libs/hana/test/ring.cpp:23:29: required from here
../boost/hana/mult.hpp:51:27: error: 'apply' is not a member of 'Mult' {aka 'boost::hana::mult_impl<int, int, void>'}
51 | return Mult::apply(static_cast<X&&>(x), static_cast<Y&&>(y));
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../boost/hana/fwd/one.hpp: In instantiation of 'struct boost::hana::one_impl<long int, void>':
../boost/hana/core/default.hpp:26:9: required by substitution of 'template<class Method> struct boost::hana::is_default<Method, decltype ((void)(static_cast<boost::hana::default_>((*(Method*)(0)))))> [with Method = boost::hana::one_impl<long int, void>]'
../boost/hana/concept/ring.hpp:27:62: required from 'struct boost::hana::Ring<long int>'
../boost/hana/one.hpp:30:38: required from 'constexpr decltype(auto) boost::hana::one_t<R>::operator()() const [with R = long int]'
../libs/hana/test/_include/laws/ring.hpp:60:17: required from 'boost::hana::test::TestRing<R, boost::hana::test::laws>::TestRing(Xs) [with Xs = boost::hana::tuple<long int, long int, long int, long int, long int, long int>; R = long int]'
../libs/hana/test/_include/laws/ring.hpp:31:34: required from here
../boost/hana/fwd/one.hpp:35:12: error: ambiguous template instantiation for 'struct boost::hana::one_impl<long int, boost::hana::when<true> >'
35 | struct one_impl : one_impl<R, when<true>> { };
| ^~~~~~~~
../boost/hana/one.hpp:43:12: note: candidates are: 'template<class R, bool condition> struct boost::hana::one_impl<R, boost::hana::when<condition> > [with R = long int; bool condition = true]'
43 | struct one_impl<R, when<condition>> : default_ {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../boost/hana/one.hpp:52:12: note: 'template<class T> struct boost::hana::one_impl<T, boost::hana::when<(std::is_arithmetic<_Tp>::value && (! std::is_same<bool, T>::value))> > [with T = long int]'
52 | struct one_impl<T, when<std::is_arithmetic<T>::value &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53 | !std::is_same<bool, T>::value>> {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../boost/hana/fwd/one.hpp:35:12: error: invalid use of incomplete type 'struct boost::hana::one_impl<long int, boost::hana::when<true> >'
35 | struct one_impl : one_impl<R, when<true>> { };
| ^~~~~~~~
../boost/hana/fwd/one.hpp:35:12: note: declaration of 'struct boost::hana::one_impl<long int, boost::hana::when<true> >'
../boost/hana/fwd/mult.hpp: In instantiation of 'struct boost::hana::mult_impl<long int, long int, void>':
../boost/hana/core/default.hpp:26:9: required by substitution of 'template<class Method> struct boost::hana::is_default<Method, decltype ((void)(static_cast<boost::hana::default_>((*(Method*)(0)))))> [with Method = boost::hana::mult_impl<long int, long int, void>]'
../boost/hana/concept/ring.hpp:29:63: required from 'struct boost::hana::Ring<long int>'
../boost/hana/one.hpp:30:38: required from 'constexpr decltype(auto) boost::hana::one_t<R>::operator()() const [with R = long int]'
../libs/hana/test/_include/laws/ring.hpp:60:17: required from 'boost::hana::test::TestRing<R, boost::hana::test::laws>::TestRing(Xs) [with Xs = boost::hana::tuple<long int, long int, long int, long int, long int, long int>; R = long int]'
../libs/hana/test/_include/laws/ring.hpp:31:34: required from here
../boost/hana/fwd/mult.hpp:52:12: error: ambiguous template instantiation for 'struct boost::hana::mult_impl<long int, long int, boost::hana::when<true> >'
52 | struct mult_impl : mult_impl<T, U, when<true>> { };
| ^~~~~~~~~
../boost/hana/mult.hpp:56:12: note: candidates are: 'template<class T, class U, bool condition> struct boost::hana::mult_impl<T, U, boost::hana::when<condition> > [with T = long int; U = long int; bool condition = true]'
56 | struct mult_impl<T, U, when<condition>> : default_ {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../boost/hana/mult.hpp:78:12: note: 'template<class T> struct boost::hana::mult_impl<T, T, boost::hana::when<(std::is_arithmetic<_Tp>::value && (! std::is_same<bool, T>::value))> > [with T = long int]'
78 | struct mult_impl<T, T, when<std::is_arithmetic<T>::value &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79 | !std::is_same<bool, T>::value>> {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../boost/hana/fwd/mult.hpp:52:12: error: invalid use of incomplete type 'struct boost::hana::mult_impl<long int, long int, boost::hana::when<true> >'
52 | struct mult_impl : mult_impl<T, U, when<true>> { };
| ^~~~~~~~~
../boost/hana/fwd/mult.hpp:52:12: note: declaration of 'struct boost::hana::mult_impl<long int, long int, boost::hana::when<true> >'
../boost/hana/one.hpp: In instantiation of 'constexpr decltype(auto) boost::hana::one_t<R>::operator()() const [with R = long int]':
../libs/hana/test/_include/laws/ring.hpp:60:17: required from 'boost::hana::test::TestRing<R, boost::hana::test::laws>::TestRing(Xs) [with Xs = boost::hana::tuple<long int, long int, long int, long int, long int, long int>; R = long int]'
../libs/hana/test/_include/laws/ring.hpp:31:34: required from here
../boost/hana/one.hpp:38:26: error: 'apply' is not a member of 'One' {aka 'boost::hana::one_impl<long int, void>'}
38 | return One::apply();
| ~~~~~~~~~~^~
../boost/hana/mult.hpp: In instantiation of 'constexpr decltype(auto) boost::hana::mult_t::operator()(X&&, Y&&) const [with X = int&; Y = int&]':
../libs/hana/test/_include/laws/ring.hpp:80:17: required from 'boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)> [with auto:2 = boost::hana::tuple<int, int, int, int, int, int>; auto:3 = int]'
../boost/hana/functional/partial.hpp:86:43: required from 'constexpr decltype(auto) boost::hana::partial_t<std::integer_sequence<long unsigned int, _Idx ...>, F, X ...>::operator()(Y&& ...) & [with Y = {int&}; long unsigned int ...n = {0}; F = boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>; X = {boost::hana::tuple<int, int, int, int, int, int>}]'
../boost/hana/for_each.hpp:46:45: required from 'constexpr void boost::hana::detail::on_each<F>::operator()(Xs&& ...) const [with Xs = {int&, int&, int&, int&, int&, int&}; F = boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*]'
../boost/hana/basic_tuple.hpp:125:39: required from 'static constexpr decltype(auto) boost::hana::unpack_impl<boost::hana::basic_tuple_tag>::apply(boost::hana::detail::basic_tuple_impl<std::integer_sequence<long unsigned int, _Idx ...>, Xn ...>&, F&&) [with long unsigned int ...i = {0, 1, 2, 3, 4, 5}; Xn = {int, int, int, int, int, int}; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/unpack.hpp:47:29: required from 'constexpr decltype(auto) boost::hana::unpack_t::operator()(Xs&&, F&&) const [with Xs = boost::hana::basic_tuple<int, int, int, int, int, int>&; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/tuple.hpp:233:32: required from 'static constexpr decltype(auto) boost::hana::unpack_impl<boost::hana::tuple_tag>::apply(Xs&&, F&&) [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/unpack.hpp:47:29: required from 'constexpr decltype(auto) boost::hana::unpack_t::operator()(Xs&&, F&&) const [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/for_each.hpp:56:25: required from 'static constexpr void boost::hana::for_each_impl<T, boost::hana::when<condition> >::apply(Xs&&, F&&) [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >; T = boost::hana::tuple_tag; bool condition = true]'
../boost/hana/for_each.hpp:35:30: required from 'constexpr void boost::hana::for_each_t::operator()(Xs&&, F&&) const [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >]'
../libs/hana/test/_include/laws/ring.hpp:42:27: required from 'boost::hana::test::TestRing<R, boost::hana::test::laws>::TestRing(Xs) [with Xs = boost::hana::tuple<int, int, int, int, int, int>; R = int]'
../libs/hana/test/_include/laws/ring.hpp:31:34: required from here
../boost/hana/mult.hpp:51:27: error: 'apply' is not a member of 'Mult' {aka 'boost::hana::mult_impl<int, int, void>'}
51 | return Mult::apply(static_cast<X&&>(x), static_cast<Y&&>(y));
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../boost/hana/zero.hpp:13,
from ../boost/hana/concept/monoid.hpp:20,
from ../libs/hana/test/_include/laws/ring.hpp:12,
from ../libs/hana/test/ring.cpp:11:
../boost/hana/fwd/zero.hpp: In instantiation of 'struct boost::hana::zero_impl<int, void>':
../boost/hana/core/default.hpp:26:9: required by substitution of 'template<class Method> struct boost::hana::is_default<Method, decltype ((void)(static_cast<boost::hana::default_>((*(Method*)(0)))))> [with Method = boost::hana::zero_impl<int, void>]'
../boost/hana/concept/monoid.hpp:27:63: required from 'struct boost::hana::Monoid<int>'
../boost/hana/plus.hpp:33:22: required from 'constexpr decltype(auto) boost::hana::plus_t::operator()(X&&, Y&&) const [with X = int&; Y = int&]'
../libs/hana/test/_include/laws/ring.hpp:53:21: required from 'boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>::<lambda(auto:4, auto:5, auto:6)> [with auto:4 = int; auto:5 = int; auto:6 = int]'
../boost/hana/functional/partial.hpp:78:43: [ skipping 23 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
../boost/hana/unpack.hpp:47:29: required from 'constexpr decltype(auto) boost::hana::unpack_t::operator()(Xs&&, F&&) const [with Xs = boost::hana::basic_tuple<int, int, int, int, int, int>&; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/tuple.hpp:233:32: required from 'static constexpr decltype(auto) boost::hana::unpack_impl<boost::hana::tuple_tag>::apply(Xs&&, F&&) [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/unpack.hpp:47:29: required from 'constexpr decltype(auto) boost::hana::unpack_t::operator()(Xs&&, F&&) const [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/for_each.hpp:56:25: required from 'static constexpr void boost::hana::for_each_impl<T, boost::hana::when<condition> >::apply(Xs&&, F&&) [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >; T = boost::hana::tuple_tag; bool condition = true]'
../boost/hana/for_each.hpp:35:30: required from 'constexpr void boost::hana::for_each_t::operator()(Xs&&, F&&) const [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >]'
../libs/hana/test/_include/laws/ring.hpp:42:27: required from 'boost::hana::test::TestRing<R, boost::hana::test::laws>::TestRing(Xs) [with Xs = boost::hana::tuple<int, int, int, int, int, int>; R = int]'
../libs/hana/test/_include/laws/ring.hpp:31:34: required from here
../boost/hana/fwd/zero.hpp:35:12: error: ambiguous template instantiation for 'struct boost::hana::zero_impl<int, boost::hana::when<true> >'
35 | struct zero_impl : zero_impl<M, when<true>> { };
| ^~~~~~~~~
../boost/hana/zero.hpp:43:12: note: candidates are: 'template<class M, bool condition> struct boost::hana::zero_impl<M, boost::hana::when<condition> > [with M = int; bool condition = true]'
43 | struct zero_impl<M, when<condition>> : default_ {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../boost/hana/zero.hpp:52:12: note: 'template<class T> struct boost::hana::zero_impl<T, boost::hana::when<(std::is_arithmetic<_Tp>::value && (! std::is_same<T, bool>::value))> > [with T = int]'
52 | struct zero_impl<T, when<
| ^~~~~~~~~~~~~~~~~~
53 | std::is_arithmetic<T>::value &&
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54 | !std::is_same<T, bool>::value
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55 | >> {
| ~~
../boost/hana/fwd/zero.hpp:35:12: error: invalid use of incomplete type 'struct boost::hana::zero_impl<int, boost::hana::when<true> >'
35 | struct zero_impl : zero_impl<M, when<true>> { };
| ^~~~~~~~~
../boost/hana/fwd/zero.hpp:35:12: note: declaration of 'struct boost::hana::zero_impl<int, boost::hana::when<true> >'
In file included from ../boost/hana/detail/operators/arithmetic.hpp:20:
../boost/hana/fwd/plus.hpp: In instantiation of 'struct boost::hana::plus_impl<int, int, void>':
../boost/hana/core/default.hpp:26:9: required by substitution of 'template<class Method> struct boost::hana::is_default<Method, decltype ((void)(static_cast<boost::hana::default_>((*(Method*)(0)))))> [with Method = boost::hana::plus_impl<int, int, void>]'
../boost/hana/concept/monoid.hpp:29:63: required from 'struct boost::hana::Monoid<int>'
../boost/hana/plus.hpp:33:22: required from 'constexpr decltype(auto) boost::hana::plus_t::operator()(X&&, Y&&) const [with X = int&; Y = int&]'
../libs/hana/test/_include/laws/ring.hpp:53:21: required from 'boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>::<lambda(auto:4, auto:5, auto:6)> [with auto:4 = int; auto:5 = int; auto:6 = int]'
../boost/hana/functional/partial.hpp:78:43: [ skipping 23 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
../boost/hana/unpack.hpp:47:29: required from 'constexpr decltype(auto) boost::hana::unpack_t::operator()(Xs&&, F&&) const [with Xs = boost::hana::basic_tuple<int, int, int, int, int, int>&; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/tuple.hpp:233:32: required from 'static constexpr decltype(auto) boost::hana::unpack_impl<boost::hana::tuple_tag>::apply(Xs&&, F&&) [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/unpack.hpp:47:29: required from 'constexpr decltype(auto) boost::hana::unpack_t::operator()(Xs&&, F&&) const [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/for_each.hpp:56:25: required from 'static constexpr void boost::hana::for_each_impl<T, boost::hana::when<condition> >::apply(Xs&&, F&&) [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >; T = boost::hana::tuple_tag; bool condition = true]'
../boost/hana/for_each.hpp:35:30: required from 'constexpr void boost::hana::for_each_t::operator()(Xs&&, F&&) const [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >]'
../libs/hana/test/_include/laws/ring.hpp:42:27: required from 'boost::hana::test::TestRing<R, boost::hana::test::laws>::TestRing(Xs) [with Xs = boost::hana::tuple<int, int, int, int, int, int>; R = int]'
../libs/hana/test/_include/laws/ring.hpp:31:34: required from here
../boost/hana/fwd/plus.hpp:52:12: error: ambiguous template instantiation for 'struct boost::hana::plus_impl<int, int, boost::hana::when<true> >'
52 | struct plus_impl : plus_impl<T, U, when<true>> { };
| ^~~~~~~~~
In file included from ../boost/hana/concept/monoid.hpp:19:
../boost/hana/plus.hpp:56:12: note: candidates are: 'template<class T, class U, bool condition> struct boost::hana::plus_impl<T, U, boost::hana::when<condition> > [with T = int; U = int; bool condition = true]'
56 | struct plus_impl<T, U, when<condition>> : default_ {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../boost/hana/plus.hpp:78:12: note: 'template<class T> struct boost::hana::plus_impl<T, T, boost::hana::when<(std::is_arithmetic<_Tp>::value && (! std::is_same<T, bool>::value))> > [with T = int]'
78 | struct plus_impl<T, T, when<
| ^~~~~~~~~~~~~~~~~~~~~
79 | std::is_arithmetic<T>::value &&
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
80 | !std::is_same<T, bool>::value
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
81 | >> {
| ~~
../boost/hana/fwd/plus.hpp:52:12: error: invalid use of incomplete type 'struct boost::hana::plus_impl<int, int, boost::hana::when<true> >'
52 | struct plus_impl : plus_impl<T, U, when<true>> { };
| ^~~~~~~~~
../boost/hana/fwd/plus.hpp:52:12: note: declaration of 'struct boost::hana::plus_impl<int, int, boost::hana::when<true> >'
../boost/hana/plus.hpp: In instantiation of 'constexpr decltype(auto) boost::hana::plus_t::operator()(X&&, Y&&) const [with X = int&; Y = int&]':
../libs/hana/test/_include/laws/ring.hpp:53:21: required from 'boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>::<lambda(auto:4, auto:5, auto:6)> [with auto:4 = int; auto:5 = int; auto:6 = int]'
../boost/hana/functional/partial.hpp:78:43: required from 'constexpr decltype(auto) boost::hana::partial_t<std::integer_sequence<long unsigned int, _Idx ...>, F, X ...>::operator()(Y&& ...) const & [with Y = {const int&}; long unsigned int ...n = {0}; F = boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>::<lambda(auto:4, auto:5, auto:6)>, int>; X = {int}]'
../boost/hana/for_each.hpp:46:45: required from 'constexpr void boost::hana::detail::on_each<F>::operator()(Xs&& ...) const [with Xs = {const int&, const int&, const int&, const int&, const int&, const int&}; F = const boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>::<lambda(auto:4, auto:5, auto:6)>, int>, int>*]'
../boost/hana/basic_tuple.hpp:115:39: required from 'static constexpr decltype(auto) boost::hana::unpack_impl<boost::hana::basic_tuple_tag>::apply(const boost::hana::detail::basic_tuple_impl<std::integer_sequence<long unsigned int, _Idx ...>, Xn ...>&, F&&) [with long unsigned int ...i = {0, 1, 2, 3, 4, 5}; Xn = {int, int, int, int, int, int}; F = boost::hana::detail::on_each<const boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>::<lambda(auto:4, auto:5, auto:6)>, int>, int>*>]'
../boost/hana/unpack.hpp:47:29: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
../boost/hana/unpack.hpp:47:29: required from 'constexpr decltype(auto) boost::hana::unpack_t::operator()(Xs&&, F&&) const [with Xs = boost::hana::basic_tuple<int, int, int, int, int, int>&; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/tuple.hpp:233:32: required from 'static constexpr decltype(auto) boost::hana::unpack_impl<boost::hana::tuple_tag>::apply(Xs&&, F&&) [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/unpack.hpp:47:29: required from 'constexpr decltype(auto) boost::hana::unpack_t::operator()(Xs&&, F&&) const [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::detail::on_each<boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >*>]'
../boost/hana/for_each.hpp:56:25: required from 'static constexpr void boost::hana::for_each_impl<T, boost::hana::when<condition> >::apply(Xs&&, F&&) [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >; T = boost::hana::tuple_tag; bool condition = true]'
../boost/hana/for_each.hpp:35:30: required from 'constexpr void boost::hana::for_each_t::operator()(Xs&&, F&&) const [with Xs = boost::hana::tuple<int, int, int, int, int, int>&; F = boost::hana::partial_t<std::integer_sequence<long unsigned int, 0>, boost::hana::test::TestRing<int, boost::hana::test::laws>::TestRing<boost::hana::tuple<int, int, int, int, int, int> >(boost::hana::tuple<int, int, int, int, int, int>)::<lambda(auto:2, auto:3)>, boost::hana::tuple<int, int, int, int, int, int> >]'
../libs/hana/test/_include/laws/ring.hpp:42:27: required from 'boost::hana::test::TestRing<R, boost::hana::test::laws>::TestRing(Xs) [with Xs = boost::hana::tuple<int, int, int, int, int, int>; R = int]'
../libs/hana/test/_include/laws/ring.hpp:31:34: required from here
../boost/hana/plus.hpp:51:27: error: 'apply' is not a member of 'Plus' {aka 'boost::hana::plus_impl<int, int, void>'}
51 | return Plus::apply(static_cast<X&&>(x), static_cast<Y&&>(y));
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~