title: Most vexing parse
body: <p>I got the code from <a href="http://en.wikipedia.org/wiki/Most_vexing_parse" rel="noreferrer">here</a>.</p>
  
  <pre><code>class Timer {
   public:
    Timer();
  };
  
  class TimeKeeper {
   public:
    TimeKeeper(const Timer&amp; t);
  
    int get_time()
    {
        return 1;
    }
  };
  
  int main() {
    TimeKeeper time_keeper(Timer());
    return time_keeper.get_time();
  }
  </code></pre>
  
  <p>From the looks of it, it should get compile error due to the line:</p>
  
  <pre><code>TimeKeeper time_keeper(Timer());
  </code></pre>
  
  <p>But it only happens if  <code>return time_keeper.get_time();</code> is present.</p>
  
  <p>Why would this line even matter, the compiler would spot ambiguity on <code>time_keeper(Timer() )</code> construction.</p>