//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// test unsigned long long to_ullong() const;
#include<bitset>#include<algorithm>#include<climits>#include<cassert>template<std::size_tN>voidtest_to_ullong(){conststd::size_tM=sizeof(unsignedlonglong)*CHAR_BIT<N?sizeof(unsignedlonglong)*CHAR_BIT:N;conststd::size_tX=M==0?sizeof(unsignedlonglong)*CHAR_BIT-1:sizeof(unsignedlonglong)*CHAR_BIT-M;constunsignedlonglongmax=M==0?0:(unsignedlonglong)(-1)>>X;unsignedlonglongtests[]={0,std::min<unsignedlonglong>(1,max),std::min<unsignedlonglong>(2,max),std::min<unsignedlonglong>(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){unsignedlonglongj=tests[i];std::bitset<N>v(j);assert(j==v.to_ullong());}}intmain(){test_to_ullong<0>();test_to_ullong<1>();test_to_ullong<31>();test_to_ullong<32>();test_to_ullong<33>();test_to_ullong<63>();test_to_ullong<64>();test_to_ullong<65>();test_to_ullong<1000>();}