| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // RUN: %clang_cc1 -fsyntax-only -verify %s
- template <int A, int B> void foo() {
- (void)(A == A); // expected-warning {{self-comparison always evaluates to true}}
- (void)(A == B);
- }
- template <int A, int B> struct S1 {
- void foo() {
- (void)(A == A); // expected-warning {{self-comparison always evaluates to true}}
- (void)(A == B);
- }
- };
- template <int A, int B> struct S2 {
- template <typename T> T foo() {
- (void)(A == A); // expected-warning {{self-comparison always evaluates to true}}
- (void)(A == B);
- }
- };
- struct S3 {
- template <int A, int B> void foo() {
- (void)(A == A); // expected-warning {{self-comparison always evaluates to true}}
- (void)(A == B);
- }
- };
- template <int A> struct S4 {
- template <int B> void foo() {
- (void)(A == A); // expected-warning {{self-comparison always evaluates to true}}
- (void)(A == B);
- }
- };
- const int N = 42;
- template <int X> void foo2() {
- (void)(X == N);
- (void)(N == X);
- }
- void test() {
- foo<1, 1>();
- S1<1, 1> s1; s1.foo();
- S2<1, 1> s2; s2.foo<void>();
- S3 s3; s3.foo<1, 1>();
- S4<1> s4; s4.foo<1>();
- foo2<N>();
- }
|