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