
Hi, I was trying to replace BOOST_REVERSE_FOREACH with the standard range-based for loop. #include <boost/range/adaptor/reversed.hpp> #include <boost/foreach.hpp> #include <vector> #include <iostream> std::vector<int> getv() { return std::vector<int>{1,2,3}; } int main(int argc, char* argv[]) { // works fine: BOOST_REVERSE_FOREACH(int i, getv()) std::cout << i << std::endl; // crashes: for(int i : boost::adaptors::reverse(getv())) std::cout << i << std::endl; return 0; } Maybe this is basic C++ I should understand; it looks like the temporary vector returned by getv() gets destroyed in the 2nd loop too soon. I was wondering whether the adaptor could warn me that I'm using it in a wrong way (the code looks so nice and compiles cleanly...). Thanks, Filip