Jonathan,
the ranges header contains code like:
    inline constexpr __adaptor::_RangeAdaptorClosure all
      = [] <viewable_range _Range> (_Range&& __r)
      {
 if constexpr (view<decay_t<_Range>>)
   return std::forward<_Range>(__r);
 else if constexpr (requires { ref_view{std::forward<_Range>(__r)}; })
   return ref_view{std::forward<_Range>(__r)};
 else
   return subrange{std::forward<_Range>(__r)};
      };

(line 1236)

When you strip away all the templateyness, you have:


inline constexpr auto all = [] () {};


That's an ODR violation -- the initializers in different TUs are not the same!

As you can guess, I can't turn this into a header unit (well, I can, but merging duplicates complains at you)

nathan
--
Nathan Sidwell

Reply via email to