Мне любопытно, по какой технической причине cin.getline и функция global getline находятся в разных местах.
Что послужило мотивацией для не простоопределение всех этих сигнатур функций для cin:
//THESE TWO EXIST
istream& cin::getline (char* s, streamsize n );
istream& cin::getline (char* s, streamsize n, char delim );
//THESE TWO COULD EXIST
istream& cin::getline (string &s);
istream& cin::getline (string &s, char delim );
Возможно, из-за того, что другие типы могут быть добавлены, и они не хотят соединять строку с cin?