I have the following code in attempt to create an RAII object wrapper, but it seems that it might be impossible. The problem here is that FT_Init_FreeType is a static which is set at some previous time to a function entry point in the FreeType library.

I could use a scope block, but would rather have a self contained thing to do the work. Perhaps some sort of mixin is the other solution?

The ideal would be to have a struct that can be placed inside a function scope, or perhaps as a module global variable. Why does Ft_Init_FreeType have to be read at compile time?


text.d(143,15): Error: static variable FT_Init_FreeType cannot be read at compile time
text.d(174,43):        called from here: initialise()

struct FreeType
{
        @disable this();

        static FreeType initialise()
        {
                return FreeType(0);
        }

        this(int)
        {
                int error = FT_Init_FreeType(&library); /// ERROR
                enforce(!error);
        }
        
        alias library this;
        
        ~this()
        {
                FT_Done_FreeType(library);
        }
        FT_Library library;
}

FreeType   freeType = FreeType.initialise();

Reply via email to