Lines Matching full:template
3 template<typename S>
6 template<typename T> using C = typename T::B;
7 template<typename T> struct D {
8 template<typename U> using E = typename A<U>::template C<A<T>>;
9 template<typename U> using F = A<E<U>>;
10 template<typename U> using G = C<F<U>>;
15 template<typename T> using I = A<decltype(h.g)>;
16 template<typename T> using J = typename A<decltype(h.g)>::template C<I<T>>;
22 template<typename T> T make();
25 template<typename T> struct traits {
29 template<typename U> using rebind_thing = typename thing::template rebind<U>;
30 template<typename U> using rebind = traits<rebind_thing<U>>;
36 template<typename T> struct ptr_traits {
39 template<typename T> using ptr = typename ptr_traits<T>::type;
41 template<typename T> struct thing {
46 template<typename U> using rebind = thing<U>;
57 template<> struct ptr_traits<bool> {
60 template<> bool &traits<thing<bool>>::alloc() { static bool b; return b; }
61 template<> void traits<thing<bool>>::free(bool&) {}
73 template<typename T> using U = int;
75 template<typename T, typename ...Ts>
76 void f1(U<T> i, U<Ts> ...is) { // expected-note 2{{couldn't infer template argument 'T'}}
81 // should really say that we couldn't infer template argument 'Ts'.
82 template<typename ...Ts>
85 template<typename...> struct type_tuple {};
86 template<typename ...Ts>
99 template<typename ...Ts>
104 template<typename T>
106 template<typename ...Ts>
107 Hidden1(typename T::template U<Ts> ...ts);
110 template<typename T, typename ...Ts>
112 Hidden2(typename T::template U<Ts> ...ts);
116 template<typename T> using U = int;
126 template<typename T> using Y = X;
127 template<typename T, typename ...Ts> struct S {
142 template<typename A> struct X {};
143 template<int I> struct C {};
144 template<int I> using Ci = C<I>;
146 template<typename A, int I> void f(X<A>, Ci<I>) {}
147 template void f(X<int>, C<0>);
151 template <typename T, T... Numbers>
154 template <unsigned int... Numbers>
157 template <typename U, unsigned int... Numbers>
160 template <typename U, unsigned int... Numbers>
172 template <typename T> struct DefaultValue { const T value=0;};
173 template <typename ... Args> struct tuple {};
174 template <typename ... Args> using Zero = tuple<DefaultValue<Args> ...>;
175 template <typename ... Args> void f(const Zero<Args ...> &t);
182 template<int x> struct X {};
183 template <template<int x> class temp> struct DefaultValue { const temp<0> value; };
184 template <typename ... Args> struct tuple {};
185 template <template<int x> class... Args> using Zero = tuple<DefaultValue<Args> ...>;
186 template <template<int x> class... Args> void f(const Zero<Args ...> &t);
194 template <typename,typename>
196 template <typename> struct derived;
199 template <typename T, typename U, typename V>
200 using derived = base<T, U>::template derived<V>; // expected-error {{expected a type}} expected-error {{expected ';'}}
201 template <typename T, typename U, typename V>
202 using derived2 = ::PR16904::base<T, U>::template derived<V>; // expected-error {{expected a type}} expected-error {{expected ';'}}
206 template<typename ...T> using X = int[sizeof...(T)];
208 template<typename ...U> struct Y {
215 template<typename ...T> void f(X<T...> &) {}
216 template<typename ...T> void f(int(&)[sizeof...(T)]) {}
218 template<typename ...T> void g(X<typename T::type...> &) {}
219 template<typename ...T> void g(int(&)[sizeof...(T)]) {} // ok, different
221 template<typename ...T, typename ...U> void h(X<T...> &) {}
222 template<typename ...T, typename ...U> void h(X<U...> &) {} // ok, different