vs2013下函数重载( 可变参数模板 导致 重载函数调用不明确)

C++语言 码拜 9年前 (2015-11-15) 1257次浏览
vs2013 下编译如下代码出错:
错误 4 error C2668: “component_getFactoryHelper”: 对重载函数的调用不明确
template< typename T >  void component_getFactoryHelper
(char * pImplName, void* pRet, const T& s)
{
//if (pRet == nullptr)
// return s.getFactory(pImplName);
return pRet;
}
template< typename T, typename… Args >  void component_getFactoryHelper
(char * pImplName, void* pRet, const T& s, const Args&… args)
{
//if (pRet == nullptr)
// return component_getFactoryHelper(pImplName, s.getFactory(pImplName), args…);
return pRet;
}
template< typename… Args >  void component_getFactoryHelper
(char * pImplName, const Args&… args)
{
void* pRet = nullptr;
return component_getFactoryHelper(pImplName, pRet, args…);
}
typedef struct {
int val;
}st_t;
int main(){
int d,e,f;
component_getFactoryHelper(“test”,d,e,f);
return 0;
}
解决方案:20分
把全部 component_getFactoryHelper 的返回值都改为 void * 之后,VS2015 可以编译通过。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明vs2013下函数重载( 可变参数模板 导致 重载函数调用不明确)
喜欢 (0)
[1034331897@qq.com]
分享 (0)