Come esercizio, recentemente ho implementato un semplice lettore di impostazioni   class    che legge i valori di impostazione da un  file INI  in un   std::map<std::string, std::string>   . Il metodo del lettore è simile al seguente: 
std::map<std::string, std::string> readSettings() {
    std::map<std::string, std::string> settings;
    for(std::string rawSetting; std::getline(settingsFile, rawSetting); )
        settings.insert(parseRawSettingIntoPair(rawSetting));
    return settings;
}
Mi sento un po 'ridondante specificando il tipo di valore renturn due volte:
- prima nella dichiarazione del metodo,
 -  in secondo luogo quando si dichiara la variabile locale,   
settings. 
 Lo so che in  c ++ 14  il compilatore può dedurre il tipo restituito se utilizzo l'identificatore    auto     nella dichiarazione di   readSettings()   , ma questa funzione mi costringerà a mantenere la sua definizione anche nel file di intestazione. C'è un approccio migliore per ridurre tali ripetizioni?