#include <iostream>
using namespace std;

template<typename T>
class Rect
{
	using val_t = T;
public:
	Rect(const val_t x0, const val_t y0, const val_t x, const val_t y) 
		: p0{ x0, y0 }, p{ x, y } {}

	val_t left() const { return p0.x; }
	val_t bottom() const { return p0.y; }
	val_t right() const { return p.x; }
	val_t top() const { return p.y; }

private:
	struct point
	{
		val_t x = 0;
		val_t y = 0;
	} p0, p;
};

int main() {
	Rect<int> r(0, 0, 1, 1);
	
	decltype(r)::val_t x = r.left();
	
	
	return 0;
}