title: Some confusions about source code of Json11
body: <p>When I read the source code of <code>Json11</code>, I found something that puzzled me.</p>
  
  <pre><code>    /* * * * * * * * * * * * * * * * * * * *
       * Static globals - static-init-safe
       */
      struct Statics {
          const std::shared_ptr&lt;JsonValue&gt; null = make_shared&lt;JsonNull&gt;();
          const std::shared_ptr&lt;JsonValue&gt; t = make_shared&lt;JsonBoolean&gt;(true);
          const std::shared_ptr&lt;JsonValue&gt; f = make_shared&lt;JsonBoolean&gt;(false);
          const string empty_string;
          const vector&lt;Json&gt; empty_vector;
          const map&lt;string, Json&gt; empty_map;
          Statics() {}
      };
  
      static const Statics &amp; statics() {
          static const Statics s {};
          return s;
      }
  
  /* * * * * * * * * * * * * * * * * * * *
   * Constructors
   */
  
  Json::Json() noexcept                  : m_ptr(statics().null) {}
  Json::Json(std::nullptr_t) noexcept    : m_ptr(statics().null) {}
  </code></pre>
  
  <p>Why does the function <code>statics</code> return a reference value <code>s</code> that declared as static const? </p>
  
  <p>Why use the function <code>statics</code> to get the member null?</p>