When is the use of std::ref necessary?
问题 Consider: std::tuple<int , const A&> func (const A& a) { return std::make_tuple( 0 , std::ref(a) ); } Is the std::ref required for writing correct and portable code? (It compiles fine without it) Background: If I remove std::ref my code builds fine without any warnings ( g++-4.6 -Wall ), but doesn't run correctly. In case of interest the definition of A : struct A { std::array<int,2> vec; typedef int type_t; template<typename... OPs,typename... VALs> A& operator=(const std::pair< std::tuple