'// mixing ints and booleans here :(' doesn't begin to tell the joke.

With "return false;" and "return 0;" being the only exits, the != 0 check in the caller would be pointless and it would never have to return early (leaking the TCD that it just constructed, oops). In fact, there'd be no reason for this "init" code to be separate from the TCD constructor.

But maybe the line should read:

        return true; // mixing ints and booleans here :(

or, better:

        return true; // mixing ints and booleans here to keep things confusing. What? It's not like mixing POINTERS and booleans. That would be wrong :(

Naturally, the question arises of whether this check is needed at all. Can the m_table pointer, the return value from constructTableFromCatalog ever be a null pointer? Well actually, in a handful of places, always under what you might call exceptional circumstances, (subtle catalog corruption detected) the function DOES return false as a pointer :( . Does that count?

Some day, when C++ supports exceptions...