p8-0x.cpp revision e3c7a7ca66c02567543dbb5ec493818e00e8b177
15f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s 25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// Deductions specific to C++0x. 45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 50bc735ffcfb223c0186419547abaa5c84482663eChris Lattnertemplate<typename T> 60bc735ffcfb223c0186419547abaa5c84482663eChris Lattnerstruct member_pointer_kind { 75f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer static const unsigned value = 0; 85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer}; 95f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 105f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencertemplate<class C, typename R, typename ...Args> 115f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerstruct member_pointer_kind<R (C::*)(Args...)> { 125f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer static const unsigned value = 1; 135f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer}; 145f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 155f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencertemplate<class C, typename R, typename ...Args> 165f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerstruct member_pointer_kind<R (C::*)(Args...) &> { 17af8fa25c0d4e0540952a50bbd06dc1558954ccd9Ted Kremenek static const unsigned value = 2; 185f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer}; 199c1b750c59d510e6c9eccb1f37bccc46ccfe6844Ted Kremenek 20eb50ed88c2aa040fac08bf2a50bde4dd3da6eb19Chris Lattnertemplate<class C, typename R, typename ...Args> 215d75de0f821023f4ed4815825bf3aea8a0b5e40dChris Lattnerstruct member_pointer_kind<R (C::*)(Args...) &&> { 226137dc99ef0c2b14050631367057758b0d596cb3Ted Kremenek static const unsigned value = 3; 231b63e4f732dbc73d90abf886b4d21f8e3a165f6dChris Lattner}; 24d7a3e2c5f61cd4893f95b69a424fe4def3aa0f69Benjamin Kramer 25c7229c338c21ef26b01ef3ecf9eec4fd373fa9ecChris Lattnertemplate<class C, typename R, typename ...Args> 265f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerstruct member_pointer_kind<R (C::*)(Args...) const> { 27cc1a875f94630e58d24a55577ffbf0e89b7da8c7Chris Lattner static const unsigned value = 4; 284f32786ac45210143654390177105eb749b614e9Ted Kremenek}; 290827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis 30caaa7df2c78bbd40197823034c0275f3dcbd63e7Ted Kremenektemplate<class C, typename R, typename ...Args> 31f4d5eb4866a27d497f0bb75b12c2ffd48ad4d9c0Benjamin Kramerstruct member_pointer_kind<R (C::*)(Args...) const &> { 325b3284a9275a27f5c4410e25eb8933be540601d6Argyrios Kyrtzidis static const unsigned value = 5; 330ea76727ae91bca918a8414ed85b530eddcfedebTed Kremenek}; 342e22253e03e175144aeb9d13350a12fd83f858beDouglas Gregor 355f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencertemplate<class C, typename R, typename ...Args> 368fe83e1df954d72c0f4ffc15d20a5222ec151c21Benjamin Kramerstruct member_pointer_kind<R (C::*)(Args...) const &&> { 378fe83e1df954d72c0f4ffc15d20a5222ec151c21Benjamin Kramer static const unsigned value = 6; 388fe83e1df954d72c0f4ffc15d20a5222ec151c21Benjamin Kramer}; 398fe83e1df954d72c0f4ffc15d20a5222ec151c21Benjamin Kramer 405f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerstruct X { }; 411eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 425f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerstatic_assert(member_pointer_kind<int (X::*)(int)>::value == 1, ""); 4388a35862fbe473f2a4f0c19f24dbe536937e1dc6Douglas Gregorstatic_assert(member_pointer_kind<int (X::*)(int) &>::value == 2, ""); 445f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerstatic_assert(member_pointer_kind<int (X::*)(int) &&>::value == 3, ""); 455f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerstatic_assert(member_pointer_kind<int (X::*)(int) const>::value == 4, ""); 465f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerstatic_assert(member_pointer_kind<int (X::*)(int) const&>::value == 5, ""); 475f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerstatic_assert(member_pointer_kind<int (X::*)(int) const&&>::value == 6, ""); 485f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer