OOP & CUDA & Bounding Box of a set of 3D points

I am slowly designing quiz material for a future course I will conduct at a University.
One nice problem I have come up by studying a serial code of a Computational Geometry library to build the Bounding Box of a set of 3D points let it be 2048 in number for the ease of the student.

If you overload the + operator of a class Bbox as :

Bbox operator+(const Bbox& b) const { 
     return Bbox((std::min)(xmin, b.xmin), 
                 (std::min)(ymin, b.ymin), 
                 (std::min)(zmin, b.zmin), 
                 (std::max)(xmax, b.xmax), 
                 (std::max)(ymax, b.ymax), 
                 (std::max)(zmax, b.zmax)); }

Find the Bounding Box in CUDA. The student will transform the class for CUDA.

I believe this problem is extremely sufficient for a student to appreciate the power of OOP and also CUDA and why NVIDIA has taken the step in offering templates in CUDA. People who are experienced in CUDA will understand the beauty…

I will not say the solution because a future student might find it. :-)