std::cin jest typu std::istream. istream::operator>> zwraca istream& (konkretnie referencje do siebie). Czyli
cin>>uczniowe<<endl;
jest równoznaczne z
cin >> uczniowie;
cin << endl;
istream w ogóle nie ma zdefiniowanego operatora <<.
Podobnie przy `cin>>endl;`. istream nie ma zdefiniowanego operatora >> przyjmującego typ endl (prawdopodobnie wskaźnik na funkcje/obiekt funkcyjny). Skąd w ogóle pomysł na coś takiego?