13ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant//===----------------------------------------------------------------------===//
23ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant//
33ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant//                     The LLVM Compiler Infrastructure
43ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
73ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant//
83ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant//===----------------------------------------------------------------------===//
93ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant
103ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant// <random>
113ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant
123ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant// template<class Engine, size_t w, class UIntType>
133ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant// class independent_bits_engine
143ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant
153ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant// explicit independent_bits_engine(const Engine& e);
163ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant
173ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant#include <random>
183ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant#include <cassert>
193ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant
203ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnantint main()
213ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant{
223ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant    {
233ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant        typedef std::mt19937 Engine;
243ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant        typedef std::independent_bits_engine<Engine, 24, unsigned> Adaptor;
253ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant        Engine e;
263ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant        Engine e0 = e;
273ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant        Adaptor a(std::move(e0));
283ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant        assert(a.base() == e);
293ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant    }
303ec31849dfebedd223d6c1ab4271afe67ef1c8e8Howard Hinnant}
31