1 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s
2 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
3 // expected-no-diagnostics
4 
5 namespace OrderWithStaticMember {
6   struct A {
gOrderWithStaticMember::A7     template<class T> int g(T**, int=0) { return 0; }
gOrderWithStaticMember::A8     template<class T> static int g(T*) { return 1; }
9   };
f()10   void f() {
11     A a;
12     int **p;
13     a.g(p);
14   }
15 }
16 
17 #if __cplusplus >= 201103L
18 namespace OperatorWithRefQualifier {
19   struct A { };
20   template<class T> struct B {
21     template<class R> int &operator*(R&) &&;
22   };
23 
24   template<class T, class R> float &operator*(T&&, R&);
test()25   void test() {
26     A a;
27     B<A> b;
28     float &ir = b * a;
29     int &ir2 = B<A>() * a;
30   }
31 }
32 
33 namespace PR17075 {
34   template <typename T> struct V {};
35   struct S { template<typename T> S &operator>>(T &t) = delete; };
36   template<typename T> S &operator>>(S &s, V<T> &v);
f(S s,V<int> v)37   void f(S s, V<int> v) { s >> v; }
38 }
39 #endif
40