@@ -15,6 +15,17 @@ template<typename ...Ts> class x;
15
15
#line 10 "pure2-variadics.cpp2"
16
16
template <int ...Ts> class y ;
17
17
18
+ #line 16 "pure2-variadics.cpp2"
19
+ template <typename ...UnnamedTypeParam1> class t0 ;
20
+
21
+
22
+ #line 21 "pure2-variadics.cpp2"
23
+ template <auto ...T> class t1 ;
24
+
25
+
26
+ #line 26 "pure2-variadics.cpp2"
27
+ template <auto ...UnnamedTypeParam1> class t2 ;
28
+
18
29
19
30
// === Cpp2 type definitions and function declarations ===========================
20
31
@@ -44,12 +55,27 @@ template<int ...Ts> class y {
44
55
#line 13 "pure2-variadics.cpp2"
45
56
};
46
57
58
+ // Discard type name pack expansion
59
+ template <typename ...UnnamedTypeParam1> class t0 {
60
+ public: template <int UnnamedTypeParam1> [[nodiscard]] static auto f () -> cpp2::i32;
61
+ };
62
+
63
+ // Discard template type pack expansion
64
+ template <auto ...T> class t1 {
65
+ public: template <int UnnamedTypeParam1> [[nodiscard]] static auto f () -> cpp2::i32;
66
+ };
67
+
68
+ // Discard typename and template type pack expansion
69
+ template <auto ...UnnamedTypeParam1> class t2 {
70
+ public: template <int UnnamedTypeParam1> [[nodiscard]] static auto f () -> cpp2::i32;
71
+ };
72
+
47
73
template <typename ...Args> auto left_fold_print (std::ostream& out, Args const & ...args) -> void;
48
74
49
- #line 20 "pure2-variadics.cpp2"
75
+ #line 35 "pure2-variadics.cpp2"
50
76
template <typename ...Args> [[nodiscard]] auto all (Args const & ...args) -> bool;
51
77
52
- #line 24 "pure2-variadics.cpp2"
78
+ #line 39 "pure2-variadics.cpp2"
53
79
template <typename ...Args> [[nodiscard]] auto make_string (Args&& ...args) -> auto;
54
80
55
81
template <typename T, typename ...Args> [[nodiscard]] auto make (Args&& ...args) -> auto;
@@ -66,7 +92,16 @@ auto main() -> int;
66
92
#line 12 "pure2-variadics.cpp2"
67
93
template <int ...Ts> [[nodiscard]] auto y<Ts...>::func() -> auto { return (0 + ... + Ts); }
68
94
69
- #line 15 "pure2-variadics.cpp2"
95
+ #line 17 "pure2-variadics.cpp2"
96
+ template <typename ...UnnamedTypeParam1> template <int UnnamedTypeParam1> [[nodiscard]] auto t0<_...>::f() -> cpp2::i32 { return 0 ; }
97
+
98
+ #line 22 "pure2-variadics.cpp2"
99
+ template <auto ...T> template <int UnnamedTypeParam1> [[nodiscard]] auto t1<T...>::f() -> cpp2::i32 { return 0 ; }
100
+
101
+ #line 27 "pure2-variadics.cpp2"
102
+ template <auto ...UnnamedTypeParam1> template <int UnnamedTypeParam1> [[nodiscard]] auto t2<_...>::f() -> cpp2::i32 { return 0 ; }
103
+
104
+ #line 30 "pure2-variadics.cpp2"
70
105
template <typename ...Args> auto left_fold_print (std::ostream& out, Args const & ...args) -> void{
71
106
// Binary left fold expression
72
107
(out << ... << args);
@@ -82,7 +117,7 @@ template <typename T, typename ...Args> [[nodiscard]] auto make(Args&& ...args)
82
117
83
118
auto main () -> int
84
119
{
85
- x<int ,long ,std::string> auto_30_5 {};
120
+ x<int ,long ,std::string> auto_45_5 {};
86
121
87
122
std::cout << std::string (" xyzzy" , 3 ) << " \n " ;
88
123
std::cout << make_string (" plugh" , cpp2::u8 {3 }) << " \n " ;
0 commit comments