// RUN: %check_clang_tidy %s misc-misplaced-const %t typedef int plain_i; typedef int *ip; typedef const int *cip; void func() { if (const int *i = 0) ; if (const plain_i *i = 0) ; if (const cip i = 0) ; // CHECK-MESSAGES: :[[@LINE+1]]:16: warning: 'i' declared with a const-qualified typedef type; results in the type being 'int *const' instead of 'const int *' if (const ip i = 0) ; } template struct S { const Ty *i; const Ty &i2; }; template struct S; template struct S; // ok template struct S; template struct U { const Ty *i; const Ty &i2; }; template struct U; // ok struct T { typedef void (T::*PMF)(); void f() { const PMF val = &T::f; // ok } };