aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp2a/concepts-ttp5.C
blob: abc22ce59d88f925b9ecf71a8224cd0868eb0466 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// PR c++/111485
// { dg-do compile { target c++20 } }

template<class T> constexpr bool always_true = true;

template<class T> concept C = always_true<T>;
template<class T> concept D = C<T> || true;

template<template<C> class TT> struct example;
template<template<D> class UU> using example_t = example<UU>;

template<class T>
struct A {
  template<template<C> class TT> struct example;

  template<template<D> class UU> using example_t = example<UU>;

  template<class U>
  struct B {
    template<template<D> class UU> using example_t = example<UU>;
  };
};

template struct A<int>::B<int>;