>>227氏は

 set<int,MyCmp> iset( MyCmp( MyCmp::desc ) );
 set<int,MyCmp> iset( ( MyCmp( MyCmp::desc ) ) );

この2つでテストしてダメならエラーメッセージを提示してくれ。
上はともかく下は通るはずだ。
通らなかったら、MyCmpが怪しい。