decltype-overloaded-functions.cpp revision 7c2342dd4c9947806842e5aca3d2bb2e542853c9
1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++0x 2af017e682918f7a1a95ff08d9ab7ae3426436ca3Anders Carlsson 3af017e682918f7a1a95ff08d9ab7ae3426436ca3Anders Carlssonvoid f(); 4af017e682918f7a1a95ff08d9ab7ae3426436ca3Anders Carlssonvoid f(int); 54b52e25f3b05ab0f9d2492276a52323a50a84fb7Douglas Gregordecltype(f) a; // expected-error{{cannot determine the declared type of an overloaded function}} 6af017e682918f7a1a95ff08d9ab7ae3426436ca3Anders Carlsson 7af017e682918f7a1a95ff08d9ab7ae3426436ca3Anders Carlssontemplate<typename T> struct S { 84b52e25f3b05ab0f9d2492276a52323a50a84fb7Douglas Gregor decltype(T::f) * f; // expected-error{{cannot determine the declared type of an overloaded function}} 9af017e682918f7a1a95ff08d9ab7ae3426436ca3Anders Carlsson}; 10af017e682918f7a1a95ff08d9ab7ae3426436ca3Anders Carlsson 11af017e682918f7a1a95ff08d9ab7ae3426436ca3Anders Carlssonstruct K { void f(); void f(int); }; 127c2342dd4c9947806842e5aca3d2bb2e542853c9John McCallS<K> b; // expected-note{{in instantiation of template class 'S<K>' requested here}} 13