@@ -51,9 +51,9 @@ class MemberConstExpr {
5151 MemberConstExpr (int p3) : m3(p3) {}
5252
5353private:
54- int m1; // COMPLIANT - is not always zero initialized
55- int m2 = 0 ; // NON_COMPLIANT
56- int m3 = 0 ; // COMPLIANT - can be set by constructor
54+ int m1; // COMPLIANT - is not always zero initialized
55+ static const int m2 = 0 ; // NON_COMPLIANT
56+ int m3 = 0 ; // COMPLIANT - can be set by constructor
5757};
5858
5959int h1 (int x, int y) { // NON_COMPLIANT
@@ -127,7 +127,7 @@ class MissingConstexprClass {
127127 MissingConstexprClass (int i) = delete ; // NON_COMPLIANT
128128 MissingConstexprClass (int i, LiteralClass lc) {} // NON_COMPLIANT
129129private:
130- int m1 = 0 ;
130+ int m1 = 0 ; // COMPLIANT - non-static member variable
131131};
132132
133133class VirtualBaseClass {};
@@ -138,9 +138,9 @@ class DerivedClass : public virtual VirtualBaseClass {
138138 DerivedClass (int i) = delete ; // COMPLIANT
139139 DerivedClass (int i, LiteralClass lc) {} // COMPLIANT
140140private:
141- int m1 = 0 ;
141+ static int m1; // NON_COMPLAINT - static member variable can be constexpr
142142};
143-
143+ int DerivedClass::m1 = 0 ;
144144class NotAllMembersInitializedClass {
145145public:
146146 NotAllMembersInitializedClass () = default ; // COMPLIANT
@@ -274,4 +274,15 @@ template <typename T> T *init() {
274274 return t;
275275}
276276
277- void test_template_instantiation () { int *t = init<int >(); }
277+ void test_template_instantiation () { int *t = init<int >(); }
278+
279+ #include < memory>
280+ #include < vector>
281+ void a_function () {
282+ auto origin = std::vector<int >{1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 };
283+ auto values = std::vector<std::unique_ptr<int >>{};
284+ for (auto &value :
285+ origin) { // Sometimes, CodeQL reports "value" should be constexpr
286+ values.emplace_back (std::make_unique<int >(value));
287+ }
288+ }
0 commit comments