Most vexing parse

Eu recebi o código deAqu.

class Timer {
 public:
  Timer();
};

class TimeKeeper {
 public:
  TimeKeeper(const Timer& t);

  int get_time()
  {
      return 1;
  }
};

int main() {
  TimeKeeper time_keeper(Timer());
  return time_keeper.get_time();
}

Pela aparência, ele deve receber um erro de compilação devido à linha:

TimeKeeper time_keeper(Timer());

Mas isso só acontece sereturn time_keeper.get_time(); é presente

Por que essa linha importa mesmo, o compilador detectaria ambiguidade emtime_keeper(Timer() ) construção

questionAnswers(1)

yourAnswerToTheQuestion