#include <iostream>
#include <tuple>
using namespace std;
 
struct Empty {};
 
template <class T>
auto print_mem(const T& obj)
{
	cout << &obj << " - " << (&obj + 1) << " (" << sizeof(obj) << ")" << endl;
}
 
 
int main() {
	std::tuple<int> t_i;
	std::tuple<Empty> t_e;
	std::tuple<int, Empty, Empty> t_iee;
	std::tuple<Empty, Empty, int> t_eei;
	std::tuple<int, Empty, Empty, int> t_ieei;
 
	cout << "std::tuple<int>" << endl;
	print_mem(t_i);
	cout << endl;
 
	cout << "std::tuple<Empty>" << endl;
	print_mem(t_e);
	cout << endl;
 
	cout << "std::tuple<int, Empty, Empty" << endl;
	print_mem(t_iee);
	print_mem(std::get<0>(t_iee));
	print_mem(std::get<1>(t_iee));
	print_mem(std::get<2>(t_iee));
	cout << endl;
 
	cout << "std::tuple<Empty, Empty, int>" << endl;
	print_mem(t_eei);
	print_mem(std::get<0>(t_eei));
	print_mem(std::get<1>(t_eei));
	print_mem(std::get<2>(t_eei));
	cout << endl;
 
	cout << "std::tuple<int, Empty, Empty, int>" << endl;
	print_mem(t_ieei);
	print_mem(std::get<0>(t_ieei));
	print_mem(std::get<1>(t_ieei));
	print_mem(std::get<2>(t_ieei));
	print_mem(std::get<3>(t_ieei));
	cout << endl;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHVwbGU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgRW1wdHkge307Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KYXV0byBwcmludF9tZW0oY29uc3QgVCYgb2JqKQp7Cgljb3V0IDw8ICZvYmogPDwgIiAtICIgPDwgKCZvYmogKyAxKSA8PCAiICgiIDw8IHNpemVvZihvYmopIDw8ICIpIiA8PCBlbmRsOwp9CgoKaW50IG1haW4oKSB7CglzdGQ6OnR1cGxlPGludD4gdF9pOwoJc3RkOjp0dXBsZTxFbXB0eT4gdF9lOwoJc3RkOjp0dXBsZTxpbnQsIEVtcHR5LCBFbXB0eT4gdF9pZWU7CglzdGQ6OnR1cGxlPEVtcHR5LCBFbXB0eSwgaW50PiB0X2VlaTsKCXN0ZDo6dHVwbGU8aW50LCBFbXB0eSwgRW1wdHksIGludD4gdF9pZWVpOwoJCgljb3V0IDw8ICJzdGQ6OnR1cGxlPGludD4iIDw8IGVuZGw7CglwcmludF9tZW0odF9pKTsKCWNvdXQgPDwgZW5kbDsKCQoJY291dCA8PCAic3RkOjp0dXBsZTxFbXB0eT4iIDw8IGVuZGw7CglwcmludF9tZW0odF9lKTsKCWNvdXQgPDwgZW5kbDsKCQoJY291dCA8PCAic3RkOjp0dXBsZTxpbnQsIEVtcHR5LCBFbXB0eSIgPDwgZW5kbDsKCXByaW50X21lbSh0X2llZSk7CglwcmludF9tZW0oc3RkOjpnZXQ8MD4odF9pZWUpKTsKCXByaW50X21lbShzdGQ6OmdldDwxPih0X2llZSkpOwoJcHJpbnRfbWVtKHN0ZDo6Z2V0PDI+KHRfaWVlKSk7Cgljb3V0IDw8IGVuZGw7CgkKCWNvdXQgPDwgInN0ZDo6dHVwbGU8RW1wdHksIEVtcHR5LCBpbnQ+IiA8PCBlbmRsOwoJcHJpbnRfbWVtKHRfZWVpKTsKCXByaW50X21lbShzdGQ6OmdldDwwPih0X2VlaSkpOwoJcHJpbnRfbWVtKHN0ZDo6Z2V0PDE+KHRfZWVpKSk7CglwcmludF9tZW0oc3RkOjpnZXQ8Mj4odF9lZWkpKTsKCWNvdXQgPDwgZW5kbDsKCQoJY291dCA8PCAic3RkOjp0dXBsZTxpbnQsIEVtcHR5LCBFbXB0eSwgaW50PiIgPDwgZW5kbDsKCXByaW50X21lbSh0X2llZWkpOwoJcHJpbnRfbWVtKHN0ZDo6Z2V0PDA+KHRfaWVlaSkpOwoJcHJpbnRfbWVtKHN0ZDo6Z2V0PDE+KHRfaWVlaSkpOwoJcHJpbnRfbWVtKHN0ZDo6Z2V0PDI+KHRfaWVlaSkpOwoJcHJpbnRfbWVtKHN0ZDo6Z2V0PDM+KHRfaWVlaSkpOwoJY291dCA8PCBlbmRsOwp9
				
				
				
				
				
			 
			
				
			
			
				
	
		
		
	
	
		std::tuple<int>
0xff83ce64 - 0xff83ce68 (4)
std::tuple<Empty>
0xff83ce63 - 0xff83ce64 (1)
std::tuple<int, Empty, Empty
0xff83ce68 - 0xff83ce6c (4)
0xff83ce68 - 0xff83ce6c (4)
0xff83ce69 - 0xff83ce6a (1)
0xff83ce68 - 0xff83ce69 (1)
std::tuple<Empty, Empty, int>
0xff83ce6c - 0xff83ce74 (8)
0xff83ce70 - 0xff83ce71 (1)
0xff83ce6c - 0xff83ce6d (1)
0xff83ce6c - 0xff83ce70 (4)
std::tuple<int, Empty, Empty, int>
0xff83ce74 - 0xff83ce80 (12)
0xff83ce7c - 0xff83ce80 (4)
0xff83ce78 - 0xff83ce79 (1)
0xff83ce74 - 0xff83ce75 (1)
0xff83ce74 - 0xff83ce78 (4)