Самый неприятный синтаксический анализ

Я получил код из здесь .

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();
}

Судя по всему, он должен получить ошибку компиляции из-за строки:

TimeKeeper time_keeper(Timer());

Но это только происходит, если присутствует return time_keeper.get_time (); .

Почему эта строка вообще имеет значение, компилятор обнаружит двусмысленность в конструкции time_keeper (Timer ()) .

]

27
задан Lightness Races with Monica 16 October 2015 в 15:37
поделиться