eof질문있습니다.

dyckjs30의 이미지

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <string>
using namespace std;
 
int main()
{
    vector<string> add;
    copy(istream_iterator<string>{cin}, istream_iterator<string>{}, back_inserter(add));
    cin.clear();
    if(cin.eof())
    {
        cout<<"EOF"<<endl;
        exit(0);
    }
    copy(istream_iterator<string>{cin}, istream_iterator<string>{}, back_inserter(add));
 
    copy(begin(add), end(add), ostream_iterator<string>{cout," "});
    return 0;
}

지금 저 코드에서 eof(맥북기준ctrl+d)입력을 했습니다.
그 다음 cin.clear()를 하면서 버퍼를 비우고 다음 copy알고리즘이 실행되어야 하는거 아닌가요??
실행 되지않고 넘어가서 바로 출력 copy를 실행하는데 왜 그런건가요??