<div dir="ltr"><div><div><div><div><div><div><div><div><div>Hello,<br><br></div>Ayush, thanks for that link to your code. It helped me understand how I could implement things much quicker!<br><br></div>I've currently added a few classes which don't really belong to the public API (currently) into private headers and used PIMPL with the Cluster class.<br><br></div>The PR failure is because of the old tests which I had written for testing the old API. I'll have to write completely new tests because the API has changed dramatically after mid terms. I'll get that fixed soon by writing a few test cases for the newly implemented functionality.<br></div><br>Currently, the main classes which have data to hide are Cluster, ClusterSet and Clusterer subclass (currently KMeans). Thus, if we can use PIMPL with these classes, it could hide quite a lot of the non-public data. As a plus point, I'm having problems with shifting PointType, Point and Centroid classes to a private header because of forward referencing problems, so even these problems can be solved if KMeans is to go with PIMPL.<br><br></div>According to me, it doesn't even affect the interface that the Clusterer provides because its just an interface. We can still hook up newer algorithms, which may not want to use PIMPL later. (I maybe wrong here)<br><br></div>Current update - I'll have the PR in good shape by tomorrow by fixing the travis build and adding in a little more PIMPL.<br><br></div>Thanks.<br><br></div>Regards,<br></div>Richhiey<br></div>