std::vector<int> vi(10);
std::vector<bool> vb(10);

// vector에 bool을 사용했을때, operator[] 를 보면 proxy 객체를 반환함을 볼 수 있다.
// (bool을 비트단위로 메모리 할당했는데, 비트단위로 사용하기 위해서 proxy를 사용함)
// (c++에는 bit를 표현하는 자료형이 없기 때문에)
auto a1 = vi[0]; // int a1
auto a2 = vb[0]; // proxy a2