C++マニアック

typedef が通らない

BorlandC++5.5 で次のコードをコンパイルしようとすると、エラーになる。

// メンバ関数を持つクラス
class CManiac {
public:
    void Func(int) {}
};
// 任意の型を引数とするテンプレートクラス
template <typename T_any> class CAnother {};

typedef void (CManiac::*T_memberfunc)(int);         // これは、問題ない。
typedef CAnother<void(CManiac::*)(int)> T_illegal;  // BorlandC++5.5 では、何故かエラー

// main が無いというエラーを避ける。
int main() { return 0; }

VC++6 や VC++.Net や g++ では、問題なく通るのだが。

いつもは優秀な BorlandC++5.5 で、これが通らないとは、ちょっと不思議だ。

セナ : 誰か回避方法が分かったら、店主に教えてあげて。もう、騒いじゃってうるさいのよね。
店主 : オッホン。言っておくが、コードが悪いのじゃないので、コンパイラの方を直すべきなのですぞ。