Visual C++ .NET 2003で試しました.

#include <set>
class MyCmp{
public:
enum order{asc, desc};
MyCmp(order const &o)
{ }
};

int main(){
std::set<int, MyCmp> iset(MyCmp(MyCmp::desc));
//std::set<int, MyCmp> iset((MyCmp(MyCmp::desc)));は通る
}

error C2751: 'desc' : the name of a function parameter cannot be qualified

一重のカッコが通らないのはVCの欠陥でしょうね,恐らく.(>248)