Policy on forward declarations for things from external libraries

Vlad Zahorodnii vlad.zahorodnii at kde.org
Fri Jul 31 16:56:25 BST 2020


Howdy,

 From time to time, I find myself in a situation where a code reviewer 
suggests to replace #include <QFoobar> with the corresponding class 
forward declaration. Such discussions usually get us nowhere because 
neither the code reviewer nor I mind to seek for a compromise. A policy 
would prevent wasting time on such discussions.

Note that I used Qt/QFoobar only as an example. Similar logic can be 
applied to other libraries as well. For example, libxcb or libexif, etc.

The good thing about forward declarations is that they can reduce the 
compilation time quite significantly.

The bad thing about it is that we must guarantee that the definition of 
QFoobar in the external library won't change. For example, QFoobar won't 
move into an inline namespace all of sudden, etc.

I propose to add a paragraph in [1] saying whether it is okay to add 
forward declarations for things from external libraries.

Any thoughts or suggestions?

Cheers,
Vlad

https://community.kde.org/Policies/Library_Code_Policy#Avoid_including_other_headers_in_headers


More information about the Kde-frameworks-devel mailing list