LWG 1432

llvm-svn: 119611
diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm
index 4f49036..17e20da 100644
--- a/libcxx/include/algorithm
+++ b/libcxx/include/algorithm
@@ -256,7 +256,7 @@
 
 template<class RandomAccessIterator, class UniformRandomNumberGenerator>
     void shuffle(RandomAccessIterator first, RandomAccessIterator last,
-                 UniformRandomNumberGenerator& g);
+                 UniformRandomNumberGenerator&& g);
 
 template <class InputIterator, class Predicate>
     bool
@@ -2717,7 +2717,11 @@
 
 template<class _RandomAccessIterator, class _UniformRandomNumberGenerator>
     void shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last,
+#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+                 _UniformRandomNumberGenerator&& __g)
+#else
                  _UniformRandomNumberGenerator& __g)
+#endif
 {
     typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
     typedef uniform_int_distribution<ptrdiff_t> _D;