Restructured OpenCL C++ wrapper