brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · ad87283 Raw
44 lines · plain
1.. title:: clang-tidy - fuchsia-statically-constructed-objects2 3fuchsia-statically-constructed-objects4======================================5 6Warns if global, non-trivial objects with static storage are constructed,7unless the object is statically initialized with a ``constexpr`` constructor8or has no explicit constructor.9 10For example:11 12.. code-block:: c++13 14  class A {};15 16  class B {17  public:18    B(int Val) : Val(Val) {}19  private:20    int Val;21  };22 23  class C {24  public:25    constexpr C(int Val) : Val(Val) {}26    C(int Val1, int Val2) : Val(Val1+Val2) {}27 28  private:29    int Val;30  };31 32  static A a;         // No warning, as there is no explicit constructor33  static C c(0);      // No warning, as constructor is constexpr34 35  static B b(0);      // Warning, as constructor is not constexpr36  static C c2(0, 1);  // Warning, as constructor is not constexpr37 38  static int i;       // No warning, as it is trivial39 40  extern int get_i();41  static C c3(get_i());// Warning, as the constructor is dynamically initialized42 43See the features disallowed in Fuchsia at https://fuchsia.dev/fuchsia-src/development/languages/c-cpp/cxx?hl=en44