    #include <iostream>

    template<typename T>
    class Point {
      
      private:
        T px, py;
        
      public:
        Point(T x, T y): px(x), py(y) {
          std::cout << "created " << x << ":" << y <<std::endl;
        };
        T x() const { return px; };
        T y() const { return py; };
      
    };

    class PointWorld : public Point<double> {
      using Point::Point;
    };

    class PointScreen: public Point<int> {
      using Point::Point;
    };


    int main() {
    
      std::cout << PointScreen(100, 100).x() << std::endl;
      
      return 0;
      
    }
