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