title: What does the c++ class access keyword "signals" mean?
body: <p>I came across a declaration similar to this (names changed per <a href="https://en.wikipedia.org/wiki/Non-disclosure_agreement" rel="noreferrer">NDA</a>):</p>
  
  <pre><code>class Foo
  {
      int  bar;
  
   public:
      explicit Foo (Fu *parent = NULL);
  
   private:
      void somefunc (String);
  
   signals:        // ??? what does this do ???
      void windowClosed();
  };
  </code></pre>
  
  <p>This is compiled successfully by g++ 4.4.7 (from about 2012).  Additionally, vim recognizes it as a keyword similar to <code>public</code> and <code>private</code> by highlighting them in brown.  (Dis)similiarly, vim uses green to highlight the keywords <code>namespace</code>, <code>class</code>, <code>void</code>, <code>int</code>, <code>double</code>, <code>float</code>, <code>char</code>, <code>unsigned</code>, etc.</p>
  
  <p>The Stackoverflow code formatter does <em>not</em> highlight <code>signals</code> above like it does <code>public</code> and <code>private</code>!</p>
  
  <p>It has proved quite difficult to Google for this (lots of noise), but I haven't found anything mentioning it, not even on SO.  I also looked in the <a href="https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html" rel="noreferrer">enhancements section</a> of the g++ documentation.</p>
  
  <p>This codebase is large (23+ million lines), oldish (~1998), and has a distinct accent.  For example, the same class definition has the class access <code>private slots:</code> before two member functions.  So it is possible there is some <code>#define</code> obfuscation or trickery going on, but I can't find it using <code>grep</code>.  It is possible g++ has been altered, but its <code>--version</code> output does not indicate modification.</p>