CoreUtils/testing/testshadow.cpp
2023-03-08 17:59:53 -08:00

71 lines
981 B
C++

#include <iostream>
#include <cstddef>
using namespace std;
struct proxy_obj;
struct my_bit_array
{
uint8_t bit_array_;
proxy_obj operator[](int n);
}
;
struct proxy_obj
{
my_bit_array& my_bit_array_;
int n_;
proxy_obj(my_bit_array& bit_array, int n)
: my_bit_array_(bit_array), n_(n)
{
}
proxy_obj& operator=(bool b)
{
uint8_t set_mask = 0x01 << n_;
if(b) my_bit_array_.bit_array_ |= set_mask;
else my_bit_array_.bit_array_ &= (~set_mask);
return *this;
}
operator bool()
{
return my_bit_array_.bit_array_ & (0x01 << n_);
}
}
;
proxy_obj my_bit_array::operator[](int n)
{
return proxy_obj(*this, n);
}
int main()
{
my_bit_array bit_set;
bit_set[0] = false;
bool b = bit_set[0];
cout << b << endl;
bit_set[3] = true;
b = bit_set[3];
cout << b << endl;
return 0;
}