
Caleb Epstein wrote: My understanding is that the class that holds the pimpl (lets call it the Interface class) generally provides forwarding methods that invoke methods on an Implementation class (the class pointed to by m_pImpl). From what I can see of your implementation, if a user wants to invoke Implementation::foo, they will need to include Implementation.h, which effectively negates the benefit of pimpl in the first place.
I really don't understand this, sorry. First, is a method a function/variable/both? Also, could you show the above using code instead of words? That's easier to read I think.
I'd call what you've provided a "Pimpl *Holder*", and not a Generic Pimpl (which I don't think can be implemented anyway).
I certainly do not agree. This is a generic pimpl implementation. Regards, Asger Mangaard