А откуда программа должна знать, что вы не хотели ввести, например
"1 1 1 2 2 3 3 3 3 3 3 3".
Почему после четвертой тройки она должна остановиться?
В кокретном случае программа считает, что пользователь закончил ввод данных, если программа попытается прочесть число и не сможет.
while (std::cin >> value)
попытается прочесть число и вернет ссылку на cin, котрая
приводится к bool и будет равна false, если произошла ошибка, т.е. прочитать еще одно число не удалось.
Консоль ждет от пользователя ввод и единственный случай, когда cin не сможет прочесть число, это если закончится входной файл (если запустить программу и перенаправить ввод из файла) или если пользователь введет какой-то символ, который не получится перобразовать в число. Кроме ctrl-z (символ eof) можно, например, ввести символ 'a', поставить точку или еще что-то.