[libc][NFC] Remove extra ; in exhaustive_test.h. (#124216)
[llvm-project.git] / clang-tools-extra / docs / clang-tidy / checks / fuchsia / statically-constructed-objects.rst
blobbed9e5ac0cfd0876d8d8f04908a158832242ad35
1 .. title:: clang-tidy - fuchsia-statically-constructed-objects
3 fuchsia-statically-constructed-objects
4 ======================================
6 Warns if global, non-trivial objects with static storage are constructed, unless
7 the object is statically initialized with a ``constexpr`` constructor or has no
8 explicit constructor.
10 For example:
12 .. code-block:: c++
14   class A {};
16   class B {
17   public:
18     B(int Val) : Val(Val) {}
19   private:
20     int Val;
21   };
23   class C {
24   public:
25     constexpr C(int Val) : Val(Val) {}
26     C(int Val1, int Val2) : Val(Val1+Val2) {}
28   private:
29     int Val;
30   };
32   static A a;         // No warning, as there is no explicit constructor
33   static C c(0);      // No warning, as constructor is constexpr
35   static B b(0);      // Warning, as constructor is not constexpr
36   static C c2(0, 1);  // Warning, as constructor is not constexpr
38   static int i;       // No warning, as it is trivial
40   extern int get_i();
41   static C c3(get_i());// Warning, as the constructor is dynamically initialized
43 See the features disallowed in Fuchsia at https://fuchsia.dev/fuchsia-src/development/languages/c-cpp/cxx?hl=en