Could anyone find a difference between 1st overload and required function? If I comment out Python specification, compilation is fine, but I need it elsewhere. Totally maddening…
template<typename TN>
void fromVectorTo(const std::vector<TN> & input, xlw::impl::XlfOper<xlw::LPXLFOPER> * output){....}
template<typename TN>
void fromVectorTo(const std::vector<TN> & input, PyObject ** output){...}
error C2665: 'pal::fromVectorTo' : none of the 2 overloads could convert all the argument types
8> myPython.h(73): could be 'void pal::fromVectorTo<double>(const std::vector<_Ty> &,PyObject **)'
8> with
8> [
8> _Ty=double
8> ]
8> myXLW.h(102): or 'void pal::fromVectorTo<double>(const std::vector<_Ty> &,xlw::impl::XlfOper<LPOPER_TYPE> *)'
8> with
8> [
8> _Ty=double,
8> LPOPER_TYPE=xlw::LPXLFOPER
8> ]
8> while trying to match the argument list '(const std::vector<_Ty>, xlw::impl::XlfOper<LPOPER_TYPE> *)'
8> with
8> [
8> _Ty=double
8> ]
8> and
8> [
8> LPOPER_TYPE=xlw::LPXLFOPER
8> ]
Looks like this was a compiler bug – the error message must have been wrong. Issue seems to go away when I used partical specialisation of template classes + did other modifs.