In this blog post, Eric Nieble states that:
What is wrong with std::begin and std::end? Surprise! they are not memory safe. Consider what this code does:
extern std::vector<int> get_data(); auto it = std::begin(get_data()); int i = *it; // BOOMstd::begin has two overloads for const and non-const lvalues. Trouble is, rvalues bind to const lvalue references, leading to the dangling iterator it above.
I'm having trouble understanding his point and why it is a dandling reference. Could someone explain ?
Aucun commentaire:
Enregistrer un commentaire