Il functor deve ricevere una std:air, quindi:
codice:

void operator()(std:air<int, CCartesianPointIfc*>& p) {

p.first <-- è la chiave
p.second <-- è il puntatore.

}
ma come faccio ad es a costruire un function object di confronto tipo il less per intenderci con solo un parametro?
ho provato cosi:

codice:
struct giugio
{
	int id;
	string str;
	string str2;

};
struct oper
{
  bool operator()(std::pair<int, giugio>& p, std::pair<int, giugio>& p1)  const
  {
    return p.second.id < p1.second.id;
  }
};
.
.
typedef map<int,giugio,oper> intV;  
intV v, v2, v3Union;
.
.
ma ottengo qest' errore:
c:\Programmi\Microsoft Visual Studio .NET 2003\Vc7\include\map(144): error C2664: 'bool oper:perator ()(std:air<_Ty1,_Ty2> &,std:air<_Ty1,_Ty2> &) const' : cannot convert parameter 1 from 'const std::map<_Kty,_Ty,_Pr>::key_type' to 'std:air<_Ty1,_Ty2> &'
with
[
_Ty1=int,
_Ty2=giugio
]
and
[
_Kty=int,
_Ty=giugio,
_Pr=oper
]
and
[
_Ty1=int,
_Ty2=giugio
]