
Artyom wrote:
Boost has too many logic in header part of library, by meaning too much I mean painfully too much.
I think that Boost should adopt as policy:
1) All implementation related code **should** be put in sources. 2) Any non-template based class should have opaque/d/pimpl pointer in its body.
I created a simple example of echo server written with Boost.Asio and written with a small pimpl-wrapped Boost.Asio
I think that what you have done is the right solution - you, the end user, can wrap things in pimpls where you believe it is beneficial. It's fairly easy to convert a non-pimpl interface into a pimpl one, espcially if you need only a subset of it; on the other hand, it's impossible to convert a pimpl'd interface back into a non-pimpled one. Phil.