
You consider pimpl part of the interface? Interesting... I've always thought of it as an implementation detail to build compiler firewalls. I.E. any class I've made using the pimpl idiom I could have built the same interface with more external dependencies and heavier compile times.
If your question was about pimpl<> itself, then I misunderstood your question. Although given pimpl<> provides at least some of the public interface it could be considered as such. Although I probably tend to consider it an implementation glue between interface and implementation. To figure out why I inherit publicly from pimpl<> you might like to try inheriting privately (which I never do. I use aggregation insted) and see what functionality becomes unavailable. Best, V.