Why does the following code crash both on Visual Studio and GCC?
For it to crash it requires the range-based for loop, std::map, std::string and taking a refenrece to the string. If I remove any one of them it will work.
#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;
}
Ideone link: http://ift.tt/2h6lA78
Aucun commentaire:
Enregistrer un commentaire