------- Comment #4 from paolo dot carlini at oracle dot com 2010-04-19 02:06 ------- Andrew, the situation isn't *that* simple as you seem to believe, because make_pair is *templatized*, thus in general it works perfectly well with lvalues. For example, this works:
std::make_pair/*<std::uint32_t,std::uint32_t>*/(x, y); that is, the problem is with the *explicit* template arguments. As far as I can see, this can be either invalid or a defect in the standard, because we are implementing quite closely the letter of N3035. In general, the C++0x std::pair is still in flux, and we should be very careful. And I disagree about considering this a regression. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43785