index.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org//===----------------------------------------------------------------------===// 247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// 347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// ��������������������The LLVM Compiler Infrastructure 447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// 547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// This file is distributed under the University of Illinois Open Source 647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// License. See LICENSE.TXT for details. 747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// 847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org//===----------------------------------------------------------------------===// 947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// test bitset<N>::reference operator[](size_t pos); 1147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include <bitset> 1347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include <cstdlib> 1447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include <cassert> 1547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgtemplate <std::size_t N> 1747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgstd::bitset<N> 1847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgmake_bitset() 1947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org{ 2047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org std::bitset<N> v; 2147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org for (std::size_t i = 0; i < N; ++i) 2247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org v[i] = static_cast<bool>(std::rand() & 1); 2347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org return v; 2447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 2547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 2647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgtemplate <std::size_t N> 2747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgvoid test_index_const() 2847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org{ 2947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org std::bitset<N> v1 = make_bitset<N>(); 3047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org if (N > 0) 3147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org { 3247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org assert(v1[N/2] == v1.test(N/2)); 3347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org typename std::bitset<N>::reference r = v1[N/2]; 3447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org assert(r == v1.test(N/2)); 3547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org typename std::bitset<N>::reference r2 = v1[N/2]; 3647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org r = r2; 3747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org assert(r == v1.test(N/2)); 3847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org r = false; 3947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org assert(r == false); 4047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org assert(v1.test(N/2) == false); 4147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org r = true; 4247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org assert(r == true); 4347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org assert(v1.test(N/2) == true); 4447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org bool b = ~r; 4547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org assert(r == true); 4647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org assert(v1.test(N/2) == true); 4747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org assert(b == false); 4847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org r.flip(); 4947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org assert(r == false); 5047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org assert(v1.test(N/2) == false); 5147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org } 5247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 5347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 5447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgint main() 5547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org{ 5647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org test_index_const<0>(); 5747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org test_index_const<1>(); 5847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org test_index_const<31>(); 5947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org test_index_const<32>(); 6047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org test_index_const<33>(); 6147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org test_index_const<63>(); 6247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org test_index_const<64>(); 6347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org test_index_const<65>(); 6447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org test_index_const<1000>(); 6547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 6647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org