1 template<typename A1> struct T1 { 2 A1 a; 3 int b; 4 }; 5 template<typename B1, typename B2> struct T2 { 6 B1 b; 7 B2 c; 8 int d; 9 }; 10 template<int C1, typename C2> struct T3 { 11 int e[C1]; 12 C2 f; 13 int g; 14 }; 15 16 template<template<typename> typename P1> union T4{ 17 P1<int> h; 18 int i; 19 }; 20 template<template<typename, typename> typename P2> union T5{ 21 P2<int, int> j; 22 int k; 23 }; 24 template<template<auto, typename> typename P3> union T6{ 25 P3<17, int> l; 26 int m; 27 }; 28 29 template<template<template<auto, typename> typename> typename P4> struct T7 { 30 P4<T3> n; 31 int o; 32 }; 33 34 T4<T1> v1; 35 T5<T2> v2; 36 T6<T3> v3; 37 T7<T6> v4; 38