brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 95206f1 Raw
60 lines · cpp
1// RUN: %check_clang_tidy %s google-explicit-constructor %t -std=c++20-or-later2 3namespace issue_811214{5 6static constexpr bool ConstFalse = false;7static constexpr bool ConstTrue = true;8 9struct A {10  explicit(true) A(int);11};12 13struct B {14  explicit(false) B(int);15};16 17struct C {18  explicit(ConstTrue) C(int);19};20 21struct D {22  explicit(ConstFalse) D(int);23  // CHECK-MESSAGES: :[[@LINE-1]]:24: warning: single-argument constructors explicit expression evaluates to 'false' [google-explicit-constructor]24};25 26template <typename>27struct E {28  explicit(true) E(int);29};30 31template <typename>32struct F {33  explicit(false) F(int);34};35 36template <typename>37struct G {38  explicit(ConstTrue) G(int);39};40 41template <typename>42struct H {43  explicit(ConstFalse) H(int);44  // CHECK-MESSAGES: :[[@LINE-1]]:24: warning: single-argument constructors explicit expression evaluates to 'false' [google-explicit-constructor]45};46 47template <int Val>48struct I {49  explicit(Val > 0) I(int);50};51 52template <int Val>53struct J {54  explicit(Val > 0) J(int);55};56 57void useJ(J<0>, J<100>);58 59} // namespace issue_8112160