Мне любопытна техническая причина для cin.getline и глобальной функции 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?