|  | // RUN: $(dirname %s)/check_clang_tidy_fix.sh %s google-build-explicit-make-pair %t | 
|  | // REQUIRES: shell | 
|  |  | 
|  | namespace std { | 
|  | template <class T1, class T2> | 
|  | struct pair { | 
|  | pair(T1 x, T2 y) {} | 
|  | }; | 
|  |  | 
|  | template <class T1, class T2> | 
|  | pair<T1, T2> make_pair(T1 x, T2 y) { | 
|  | return pair<T1, T2>(x, y); | 
|  | } | 
|  | } | 
|  |  | 
|  | template <typename T> | 
|  | void templ(T a, T b) { | 
|  | std::make_pair<T, unsigned>(a, b); | 
|  | } | 
|  |  | 
|  | void test(int i) { | 
|  | std::make_pair<int, int>(i, i); | 
|  | // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: for C++11-compatibility, omit template arguments from make_pair | 
|  | // CHECK-FIXES: std::make_pair(i, i) | 
|  |  | 
|  | std::make_pair<unsigned, int>(i, i); | 
|  | // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: for C++11-compatibility, use pair directly | 
|  | // CHECK-FIXES: std::pair<unsigned, int>(i, i) | 
|  |  | 
|  | std::make_pair<int, unsigned>(i, i); | 
|  | // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: for C++11-compatibility, use pair directly | 
|  | // CHECK-FIXES: std::pair<int, unsigned>(i, i) | 
|  |  | 
|  | #define M std::make_pair<int, unsigned>(i, i); | 
|  | M | 
|  | // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: for C++11-compatibility, use pair directly | 
|  | // Can't fix in macros. | 
|  | // CHECK-FIXES: #define M std::make_pair<int, unsigned>(i, i); | 
|  | // CHECK-FIXES-NEXT: M | 
|  |  | 
|  | templ(i, i); | 
|  |  | 
|  | std::make_pair(i, 1); // no-warning | 
|  | } |