模板化Sum(Args ...)可变参数函数不能编译
我使用静态结构成员技巧强制执行第二遍编译,但仍然出现错误:
struct S
{
template <typename T>
static T Sum(T t) {
return t;
}
template <typename T, typename ... Rest>
static auto Sum(T t, Rest... rest) -> decltype(t + Sum(rest...) )
{
return t + Sum(rest...);
}
};
int main()
{
auto x = S::Sum(1,2,3,4,5);
}
main.cpp:17:14:没有用于调用'Sum'的匹配函数
即使使用clang 4.0
编译失败。
我设法使用decltype(auto)
来编译它(只有auto
会起作用),而不是显式尾部返回类型。
struct S
{
template <typename T>
static T Sum(T t) {
return t;
}
template <typename T, typename ... Rest>
static decltype(auto) Sum(T t, Rest... rest)
{
return t + Sum(rest...);
}
};
我认为编译器不能推导出类型,因为扣除只依赖于递归返回语句。
更多信息在这里
链接地址: http://www.djcxy.com/p/96967.html上一篇: Templated Sum(Args...) variadic function doesn't compile
下一篇: Azure AD B2C integrating with corporate (Azure?) AD accounts