EDIT : Oh! I posted the answer below because I didn’t read your post correctly. I thought you said that the Boost library used composition over inheritance, and not vice versa. However, if this is useful to anyone ... (See EDIT2 for what, in my opinion, might be the answer to your question.)
I do not know a specific answer for the Boost parameter library. However, I can say that this is usually the best choice. The reason is that whenever you have the opportunity to realize relationships in more than one way, you should choose the weakest (low connection / high cohesion). Because inheritance is stronger than composition ...
Note that sometimes using private inhertiance can make it difficult to implement code-exclusive code. Take operator== , for example. Using composition, you can create a temporary one and complete the task with the fixation / rollback logic (provided that the object is correctly constructed). But if you use inheritance, you'll probably do something like Base::operator==(obj) inside the operator== derived class. If a call to Base::operator==(obj) calls, you risk your guarantees.
EDIT 2: Now, trying to answer what you really requested. I understood this from the link you provided. Since I do not know all the details of the library, please correct me if I am mistaken.
When you use composition to be “realized in terms of”, you need one level of indirection for delegation.
struct AImpl {
struct A { AImpl * impl_; int get_int() const { return impl->get_int(); } /* ... */ };
In the case of a constructor with parameter support, you need to create an implementation class, but you can still use the wrapper class in a transparent way. This means that in the example from the link you myclass , you would be desirable if you could manipulate myclass in the same way as you could manipulate myclass_impl . This can only be done through inheritance. (Note that in the example, inheritance is publicly available, since it is the default for struct.)
I assume myclass_impl should be a “real” class, with data, behavior, etc. Then, if you had a method like get_int() , and if you did not use inheritance, you would have to write the get_int() wrapper in myclass just like I did above.