https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101722

--- Comment #5 from 康桓瑋 <hewillk at gmail dot com> ---
(In reply to Jonathan Wakely from comment #2)
> Boost 1.76.0 is totally broken, it does this in the middle of namespace
> boost::math::tools::meta_programming:
> 
> 
> template<typename L, typename Q> 
> using mp_remove_if_q = mp_remove_if<L, Q::template fn>;
> 
> // Index sequence
> // Use C++14 index sequence if available
> #if defined(__cpp_lib_integer_sequence) && (__cpp_lib_integer_sequence >=
> 201304)
> #include <utility>
> template<std::size_t... I>
> using index_sequence = std::index_sequence<I...>;
> 
> template<std::size_t N>
> using make_index_sequence = std::make_index_sequence<N>;
> 
> template<typename... T>
> using index_sequence_for = std::index_sequence_for<T...>;
> 
> #else
> 
> 
> 
> If <utility> has already been included earlier, it happens to work (because
> that #include is a no-op due to the header guard) but because my changes
> mean that <utility> is included less often, that is the first time it's
> seen. And it defines the contents of <utility> inside the boost namespace.
> 
> I'll report it to boost (and make sure we patch boost in Fedora).

Thank you for your explanation. :)

Reply via email to