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

            Bug ID: 96531
           Summary: ICE for concepts here.
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: euloanty at live dot com
  Target Milestone: ---

#include<variant>
#include<concepts>

template<typename ... Args> struct pack {};
template<typename ... Args> struct uv : std::false_type {};
template<typename ... Args> struct uv<std::variant<Args...>> {
    using type = pack<Args...>;
};

template <typename T, typename ... Args>
concept is_any_of_impl_4 = requires(pack<Args>) {
    requires (std::same_as<T, Args> || ...);
};

inline std::variant<int, double> v;

template <typename T>
requires is_any_of_impl_4<bool, uv<decltype(v)>::type>
void bar() {}

int main() {
    bar<int>();
}

https://godbolt.org/z/WPdePT
<source>: In instantiation of 'void bar() [with T = int]':

<source>:22:14:   required from here

<source>:12:14: internal compiler error: in tsubst_pack_expansion, at
cp/pt.c:12924

   12 |     requires (std::same_as<T, Args> || ...);

      |     ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Please submit a full bug report,

with preprocessed source if appropriate.

See <https://gcc.gnu.org/bugs/> for instructions.

Compiler returned: 1

Reply via email to