Clang Project

clang_source_code/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p3.cpp
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
5namespace OrderWithStaticMember {
6  struct A {
7    template<class T> int g(T**, int=0) { return 0; }
8    template<class T> static int g(T*) { return 1; }
9  };
10  void f() {
11    A a;
12    int **p;
13    a.g(p);
14  }
15}
16
17#if __cplusplus >= 201103L
18namespace 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&);
25  void test() {
26    A a;
27    B<A> b;
28    float &ir = b * a;
29    int &ir2 = B<A>() * a;
30  }
31}
32
33namespace 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);
37  void f(S s, V<int> v) { s >> v; }
38}
39#endif
40