title: Overloaded Parenthesis operator with no arguments feature name
body: <p>Wikipedia's article on <a href="http://en.wikipedia.org/wiki/Property_%28programming%29#C.2B.2B" rel="nofollow">Properties</a> presents a template class that can be used to create property members (lightly edited): </p>
  
  <pre><code>template &lt;typename T&gt; class property {
          T value;
      public:
          T &amp; operator = (const T &amp;i) {
              return value = i;
          }
  
          operator T const &amp; () const {
              return value;
          }
  };
  
  
  struct Bar {
      // Using the property&lt;&gt;-template.
      property &lt;bool&gt; alpha;
      property &lt;unsigned int&gt; bravo;
  };
  
  int main () {
      Bar bar;
      bar.alpha = true;
  
      return bar.bravo;
  }
  </code></pre>
  
  <p>What I'm trying to figure out is the name of the C++ feature that lets that to <code>bar.bravo</code> exist with no trailing <code>()</code>. </p>
  
  <p>The code <a href="http://ideone.com/p2LuJ7" rel="nofollow">compiles</a> fine... I just have no idea why!</p>
  
  <p>Googling points me to 'Functors', but those overloaded parens operators all seem to have arguments (and I can understand how they work). </p>