//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // template // void // random_shuffle(RandomAccessIterator first, RandomAccessIterator last); // // template // void // random_shuffle(RandomAccessIterator first, RandomAccessIterator last, // RandomNumberGenerator& rand); // // In C++17, random_shuffle has been removed. // However, for backwards compatibility, if _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE // is defined before including , then random_shuffle will be restored. #define _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE #include #include struct gen { std::ptrdiff_t operator()(std::ptrdiff_t n) { return n-1; } }; int main() { std::vector v; std::random_shuffle(v.begin(), v.end()); gen r; std::random_shuffle(v.begin(), v.end(), r); }