Почему следующий код разбивается как на Visual Studio, так и на GCC?
Для его аварийного восстановления требуется диапазон для цикла, std:: map, std::string и ссылки на строку. Если я удалю кого-нибудь из них, он будет работать.
#include <iostream>
#include <string>
#include <map>
using namespace std;
struct S
{
map<string, string> m;
S()
{
m["key"] = "b";
}
const string &func() const
{
return m.find("key")->second;
}
};
int main()
{
for (char c : S().func())
cout << c;
return 0;
}
Идеальная ссылка: http://ideone.com/IBmhDH