> On Jul 14, 2020, at 2:38 PM, Simon Fraser <simon.fra...@apple.com> wrote:
> Could someone educate me about <wtf/Forward.h>? When should I use this 
> instead of individual wtf headers?

Forward.h is analogous to forward-declaring a class ('class IntPoint;' instead 
of ‘#include “IntPoint.h”'), but it works for many often-used classes and class 
templates in the WTF namespace, including class templates that would be 
difficult to correctly forward-declare due to their many arguments, such as 
WTF::Vector. And it includes “using WTF::String” and the like, as well, to 
import WTF namespace things into the global namespace.

We can use it any time we need a forward-declaration, not an entire definition, 
of one of the items. For example, to compile a header that just takes and 
returns String objects, we only need a forward declaration of String. The 
easiest way to correctly do that is to include <wtf/Forward.h>. Including 
<wtf/WTFString.h> pulls in a lot more. For the specific case of String, I think 
you might be able to go further and write this instead:

    namespace WTF {
    class String;
    using WTF::String;

But I have never tried it, and there might be some problem with that.

— Darin
webkit-dev mailing list

Reply via email to