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