1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // <random> 11 12 // template<class UIntType, size_t w, size_t s, size_t r> 13 // class subtract_with_carry_engine; 14 15 // subtract_with_carry_engine& operator=(const subtract_with_carry_engine&); 16 17 #include <random> 18 #include <cassert> 19 20 void test1()21test1() 22 { 23 typedef std::ranlux24_base E; 24 E e1(2); 25 e1(); 26 E e2(5); 27 e2 = e1; 28 assert(e1 == e2); 29 assert(e1() == e2()); 30 E::result_type k = e1(); 31 assert(e1 != e2); 32 assert(e2() == k); 33 assert(e1 == e2); 34 } 35 36 void test2()37test2() 38 { 39 typedef std::ranlux48_base E; 40 E e1(3); 41 e1(); 42 E e2(5); 43 e2 = e1; 44 assert(e1 == e2); 45 assert(e1() == e2()); 46 E::result_type k = e1(); 47 assert(e1 != e2); 48 assert(e2() == k); 49 assert(e1 == e2); 50 } 51 main()52int main() 53 { 54 test1(); 55 test2(); 56 } 57