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

--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
// PR c++/105797

namespace std {
template <int __v> struct integral_constant {
  static constexpr int value = __v;
};
template <typename _Tp> struct decay { typedef _Tp type; };
template <typename _Tp> using decay_t = typename decay<_Tp>::type;
template <typename>
constexpr bool is_integral_v = integral_constant<true>::value;
template <typename _Tp>
concept integral = is_integral_v<_Tp>;
} // namespace std
template <typename> struct AStruct { using value_type = int; };
template <typename T_>
void fc1(AStruct<T_> v) requires
    std::integral<typename std::decay_t<decltype(v)>::value_type>;
template <typename T1_, typename T2_>
void fc2(AStruct<T1_> v1, T2_) requires
    std::integral<typename std::decay_t<decltype(v1)>::value_type>;
AStruct<int> test_v1, test2_v;
int test_v2;
void test() { fc2(test_v1, test_v2); }
void test2() { fc1(test2_v); }

Reply via email to