Details
Description
Reported by Marco Clemencic:
The reproducer script /afs/cern.ch/work/m/marcocle/LHCBPS-1856/reproducer.sh should print
>>> from LoKiArrayFunctors.decorators import ANUM
|
>>> from LoKiPhys.decorators import ALL
|
>>> print ANUM(ALL) < 1
|
(ANUM(ALL)<1)
|
>>> print ANUM(ALL) <= 1
|
(ANUM(ALL)<=1)
|
but it prints:
>>> from LoKiArrayFunctors.decorators import ANUM
|
>>> from LoKiPhys.decorators import ALL
|
>>> print ANUM(ALL) < 1
|
(ANUM(ALL)<1)
|
>>> print ANUM(ALL) <= 1
|
Traceback (most recent call last):
|
File "<stdin>", line 8, in <module>
|
File "/workspace/build/LHCb/InstallArea/x86_64-centos7-gcc9-dbg/python/LoKiCore/decorators.py", line 567, in _le_
|
TypeError: none of the 4 overloaded methods succeeded. Full details:
|
static LoKi::FunctorFromFunctor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,bool> LoKi::Dicts::FuncOps__<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > > >::__le__(LoKi::Functor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,double>& fun1, LoKi::Functor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,double>& fun2) =>
|
could not convert argument 2
|
static LoKi::FunctorFromFunctor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,bool> LoKi::Dicts::FuncOps__<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > > >::__le__(LoKi::Functor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,double>& fun1, LoKi::Functor<void,double>& fun2) =>
|
could not convert argument 2
|
static LoKi::FunctorFromFunctor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,bool> LoKi::Dicts::FuncOps__<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > > >::__le__(LoKi::Functor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,double>& fun1, const LoKi::Param& fun2) =>
|
could not convert argument 2
|
static LoKi::FunctorFromFunctor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,bool> LoKi::Dicts::FuncOps__<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > > >::__le__(LoKi::Functor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,double>& fun1, double fun2) =>
|
could not resolve LoKi::Dicts::FuncOps__<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > > >::__le__(LoKi::Functor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,double>&, double)
|
The function that should be invoked is in /afs/cern.ch/work/m/marcocle/LHCBPS-1856/lhcb-lcg-test/30/LHCb/InstallArea/x86_64-centos7-gcc9-dbg/include/LoKi/FuncOps.h:81 (https://gitlab.cern.ch/lhcb/LHCb/-/blob/master/Phys/LoKiCore/LoKi/FuncOps.h#L81).
What is weird (for us at least) is that the __lt__ function a few lines above works nicely.
The only hint I have is the "could not resolve" message, which suggests that the overload is correctly picked up, but the function cannot be found.
We are tracking the progress in https://its.cern.ch/jira/browse/LHCBPS-1856.