p3.cpp revision 9cef0064da0fe93cf60cc351d28ddf2e95fba0b3
12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: %clang_cc1 -fsyntax-only -verify %s 22d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 32d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesnamespace DeduceVsMember { 42d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines template<typename T> 52d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct X { 62d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines template<typename U> 72d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int &operator==(const U& other) const; 82d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 92d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines template<typename T, typename U> 112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines float &operator==(const T&, const X<U>&); 122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void test(X<int> xi, X<float> xf) { 142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines float& ir = (xi == xf); 152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines } 162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines} 172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesnamespace OrderWithStaticMember { 192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct A { 202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines template<class T> int g(T**, int=0) { return 0; } 212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines template<class T> static int g(T*) { return 1; } 222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void f() { 24 A a; 25 int **p; 26 a.g(p); 27 } 28} 29