Hi all, I was just reading this: http://herbsutter.com/gotw/_100/ and got to wondering about the pimpl idiom in Qt with respect to forwards compatibility with C++11.
Should there be some discussion of the relative merits of using QFooClass* QFooClassPrivate::q_ptr to refer to public classes from inside the private implementation classes versus using QFooClassPrivate::barMethod(QFooClass *parent, <<bar method args>>) for the methods that need to use the parent reference. At the moment we tend to use the first technique. The downside is that we would then need to make sure that q_ptr is kept up to date if the parent class is acted on by the move operators from C++11. This could be remedied by documenting that you need to update the pointers after a move and providing examples (preferably including examples on how to detect if you have support for the move operators as well). We'd also need to update the existing code if we want to avoid surprises there. With the second technique we'd avoid the need to update the pointer, although we'd still need to document the new idiom and then update the existing code. There are a few other issues that are also probably relevant (how to deal with grandparents, for instance) , but I figured it's worth mentioning the basic issue to stimulate some discussion and see what falls out. Cheers, Dave _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
