152
|
1 // DR 1512
|
|
2 // PR c++/87699
|
|
3 // { dg-do compile { target c++11 } }
|
|
4
|
|
5 using nullptr_t = decltype(nullptr);
|
|
6
|
|
7 template<typename T>
|
|
8 struct S { operator T(); };
|
|
9
|
|
10 void
|
|
11 fn ()
|
|
12 {
|
|
13 S<nullptr_t> s;
|
|
14 // Make sure we create a builtin operator overload candidate for == and !=.
|
|
15 if (s == s) { }
|
|
16 if (s != s) { }
|
|
17
|
|
18 // But not for these.
|
|
19 if (s > s) { } // { dg-error "no match for" }
|
|
20 if (s < s) { } // { dg-error "no match for" }
|
|
21 if (s <= s) { } // { dg-error "no match for" }
|
|
22 if (s >= s) { } // { dg-error "no match for" }
|
|
23
|
|
24 S<int *> r;
|
|
25 if (s == r) { } // { dg-error "no match for" }
|
|
26 if (s != r) { } // { dg-error "no match for" }
|
|
27 if (s > r) { } // { dg-error "no match for" }
|
|
28 if (s < r) { } // { dg-error "no match for" }
|
|
29 if (s >= r) { } // { dg-error "no match for" }
|
|
30 if (s <= r) { } // { dg-error "no match for" }
|
|
31 }
|