1 | // RUN: %check_clang_tidy %s google-runtime-operator %t |
2 | |
3 | struct Foo { |
4 | void *operator&(); |
5 | // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not overload unary operator&, it is dangerous. [google-runtime-operator] |
6 | }; |
7 | |
8 | template <typename T> |
9 | struct TFoo { |
10 | T *operator&(); |
11 | // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not overload unary operator& |
12 | }; |
13 | |
14 | TFoo<int> tfoo; |
15 | |
16 | struct Bar; |
17 | void *operator&(Bar &b); |
18 | // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: do not overload unary operator& |
19 | |
20 | // No warnings on binary operators. |
21 | struct Qux { |
22 | void *operator&(Qux &q); |
23 | }; |
24 | |
25 | void *operator&(Qux &q, Qux &r); |
26 | |