void func(const set<A>& va);
じゃなくて
void func(set<const A>& va);
にしたいって話?