C++11の
template<class RandomAccessIterator, class UniformRandomNumberGenerator> void shuffle(RandomAccessIterator first, RandomAccessIterator last, UniformRandomNumberGenerator&& rand);
経緯を調べてみると、std::shuffle()は元々std::random_shuffle()という名前でした。
これはConcept-basedオーバーロードで既存のstd::random_shuffle()と同じ名前での共存を実現していましたが、コンセプトの削除とともにN3090のドラフトからstd::shuffle()という名前に改名されたようです。
// random_shuffle()という名前だったころのshuffle() with コンセプト template<RandomAccessIterator Iter, UniformRandomNumberGenerator Rand> void random_shuffle(Iter first, Iter last, Rand&& g);