You're right, but in that case you'd get linker errors anyway, so the test is superfluous. The reason I check for char* is to make the cast safe (which still gets executed; bug). Likewise, toString is overkill IMHO. I don't people will need namespace(ctfefunc()) or anything like that.