// RUN: %clang_cc1 -fsyntax-only -verify %s
voidtest0(){char variable =(void)0;// expected-error@-1{{cannot initialize a variable}}
}voidtest1(intx=(void)0){}// expected-error@-1{{cannot initialize a parameter}}
// expected-note@-2{{here}}
inttest2(){return(void)0;// expected-error@-1{{cannot initialize return object}}
}structS4{S4():x((void)0){};// expected-error@-1{{cannot initialize a member subobject}}
int x;};voidtest5(){int foo[2]={1,(void)0};// expected-error@-1{{cannot initialize an array element}}
}voidtest6(){newint((void)0);// expected-error@-1{{cannot initialize a new value}}
}typedefshort short2 __attribute__((__vector_size__ (2)));voidtest10(){
short2 V ={(void)0};// expected-error@-1{{cannot initialize a vector element}}
}typedeffloat float2 __attribute__((ext_vector_type(2)));typedeffloat float4 __attribute__((ext_vector_type(4)));voidtest14(const float2 in,const float2 out){const float4 V =(float4){ in, out };// expected-error@-1{{cannot initialize a compound literal initializer}}
}namespacetemplate_test{classS{public:voidfoo(int);};template<class P>structS2{void(P::*a)(constint&);};voidtest_15(){
S2<S> X ={&S::foo};// expected-error-re@-1{{cannot initialize a member subobject of type 'void (template_test::S::*)(const int &){{( __attribute__\(\(thiscall\)\))?}}' with an rvalue of type 'void (template_test::S::*)(int){{( __attribute__\(\(thiscall\)\))?}}': type mismatch at 1st parameter ('const int &' vs 'int')}}
}}