1 // RUN: %clang_cc1 -fsyntax-only -verify %s
3 template<typename MetaFun
, typename T
>
5 typedef typename
MetaFun::template apply
<T
> type
;
16 // FIXME: if we make the declarator below a pointer (e.g., with *ip),
17 // the error message isn't so good because we don't get the handy
18 // 'aka' telling us that we're dealing with an int**. Should we fix
19 // getDesugaredType to dig through pointers and such?
20 bind_metafun
<add_pointer
, int>::type::type ip
= &i
;
21 bind_metafun
<add_pointer
, float>::type::type fp
= &i
; // expected-error{{cannot initialize a variable of type 'bind_metafun<add_pointer, float>::type::type' (aka 'float *') with an rvalue of type 'int *'}}
25 struct extract_type_type
{
26 typedef typename
T::type::type t
;
30 extract_type_type
<bind_metafun
<add_pointer
, double> >::t dp
= &d
;