1 // Boost.Range library 2 // 3 // Copyright Robin Eckert 2015. Use, modification and distribution is 4 // subject to the Boost Software License, Version 1.0. (See 5 // accompanying file LICENSE_1_0.txt or copy at 6 // http://www.boost.org/LICENSE_1_0.txt) 7 // 8 // 9 // For more information, see http://www.boost.org/libs/range/ 10 // 11 //[ref_unwrapped_example 12 #include <boost/range/adaptor/ref_unwrapped.hpp> 13 #include <iostream> 14 #include <vector> 15 16 struct example 17 { 18 int value; 19 }; 20 main(int argc,const char * argv[])21int main(int argc, const char* argv[]) 22 { 23 //<- 24 #if !defined(BOOST_NO_CXX11_DECLTYPE) \ 25 && !defined(BOOST_NO_CXX11_RANGE_BASED_FOR) \ 26 && !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) \ 27 && !defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) 28 //-> 29 using boost::adaptors::ref_unwrapped; 30 31 example one{1}; 32 example two{2}; 33 example three{3}; 34 35 std::vector<std::reference_wrapper<example> > input{one, two, three}; 36 37 for (auto&& entry : input | ref_unwrapped) 38 { 39 std::cout << entry.value; 40 } 41 42 return 0; 43 //<- 44 #endif 45 //-> 46 } 47 //] 48