Visual Studio 2005でビルドすると、Efficient C++に載っていたメモリマネージャの下記コードで、C2061のエラーが出る。
NextOnFreeList* head = static_cast <NextOnFreeList *> doomed; // error C2061
C2061のエラーはヘルプを見ると、「予期しない位置で identifier を見つけました。identifier は、使用する前に宣言してください。」ということだが、どうも該当しない。
結論からいうと、static_castの場合は、下記のように()が必要なだけだった。
NextOnFreeList* head = static_cast <NextOnFreeList *> (doomed); // OK
毎度のことだけれど、エラーメッセージは、あてになったり、ならなかったりで、イヤになる。