重载模板函数歧义问题

时间:2012-10-02 14:45:38

标签: c++ templates compiler-errors overloading

有没有人能找到第一次过载和所需功能之间的区别?如果我注释掉Python规范,编译很好,但我需要在其他地方。完全疯了......

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>        ]

1 个答案:

答案 0 :(得分:0)

看起来这是一个编译器错误 - 错误消息肯定是错误的。当我使用模板类的局部特化+做其他修改时,问题似乎消失了。