16 template<typename T
> struct C
: X
, T
{
18 using typename
T::type
;
23 template<typename T
> struct D
: X
, T
{
25 using typename
T::type
;
30 template<typename T
> struct E
: X
, T
{
32 using typename
T::type
;
37 template<typename T
> struct F
: X
, T
{
39 using typename
T::type
;
44 // Force instantiation.
45 typedef C
<YA
>::type I
;
46 typedef D
<YA
>::type I
;
47 typedef E
<YA
>::type I
;
48 typedef F
<YA
>::type I
;
50 #if __cplusplus >= 201702L
51 template<typename
...T
> struct G
: T
... {
54 using Q
= decltype(G
<X
, Z
>());