title: why std::function is not executed
body: <p>I am using std::bind to create a std::function type and typedef it, but its instance would not execute. Following is my code:</p>
  <pre><code>void func(int a, const std::string&amp; b)
  {
      std::cout &lt;&lt; a &lt;&lt; &quot;, &quot; &lt;&lt; b &lt;&lt; std::endl;
  }
  typedef std::function&lt;void (int, const std::string&amp;)&gt; THE_FUNCTION;
  
  THE_FUNCTION f = std::bind(func, 18, std::string(&quot;hello world&quot;));
  
  f; // no action at all
  f(); // will not compile, term does not evaluate to a function taking 0 arguments
       // class does not define an 'operator()' or a user defined conversion operator 
       // to a pointer-to-function or reference-to-function that takes appropriate number 
       // of arguments
  f.operator(); // will not compile, 'std::_Func_class&lt;_Ret,int,const std::string &amp;&gt;::operator ()'
                // : non-standard syntax; use '&amp;' to create a pointer to member
  (&amp;the_f)-&gt;operator(); // will not compile, 'std::_Func_class&lt;_Ret,int,const std::string &amp;&gt;::operator ()': non-standard syntax; use '&amp;' to create a pointer to member
  </code></pre>
  <p>But if I do this, then the function will get executed:</p>
  <pre><code>auto g = std::bind(func, 3, &quot;good morning&quot;)
  g()
  </code></pre>