The c++ version