#include<iostream>

class Point
{
public:
	int X, Y;
	mutable int Z;

	constexpr Point(int x, int y) :X (x), Y(y), Z(0)
	{ }

	constexpr int GetX() const
	{
		// Z++;
		return X+Z;
	}

	int GetY() const
	{
		Z++;
		return Y;
	}

	void FoolConst() const
	{
		Z++;
	}
};

constexpr int foo()
{
	return 0;
}

template<int S>
void foo()
{
	std::cout<<S << std::endl;
}

int main()
{	
	constexpr Point pt(10, 20);

	pt.FoolConst();

	foo<pt.GetX()>();

	std::cout << pt.GetX();
}