//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// test unsigned long to_ulong() const;
#include<bitset>#include<algorithm>#include<climits>#include<cassert>template<std::size_tN>voidtest_to_ulong(){conststd::size_tM=sizeof(unsignedlong)*CHAR_BIT<N?sizeof(unsignedlong)*CHAR_BIT:N;conststd::size_tX=M==0?sizeof(unsignedlong)*CHAR_BIT-1:sizeof(unsignedlong)*CHAR_BIT-M;conststd::size_tmax=M==0?0:std::size_t(-1)>>X;std::size_ttests[]={0,std::min<std::size_t>(1,max),std::min<std::size_t>(2,max),std::min<std::size_t>(3,max),std::min(max,max-3),std::min(max,max-2),std::min(max,max-1),max};for(std::size_ti=0;i<sizeof(tests)/sizeof(tests[0]);++i){std::size_tj=tests[i];std::bitset<N>v(j);assert(j==v.to_ulong());}}intmain(){test_to_ulong<0>();test_to_ulong<1>();test_to_ulong<31>();test_to_ulong<32>();test_to_ulong<33>();test_to_ulong<63>();test_to_ulong<64>();test_to_ulong<65>();test_to_ulong<1000>();}