gpt4 book ai didi

c++ - 模板化 Sum(Args...) 可变参数函数无法编译

转载 作者:可可西里 更新时间:2023-11-01 18:37:31 32 4
gpt4 key购买 nike

我使用静态结构成员技巧来强制执行第二遍编译,但仍然出现错误:

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...);
}
};

我认为编译器无法推导类型,因为推导仅取决于递归返回语句。

More info here

关于c++ - 模板化 Sum(Args...) 可变参数函数无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45503734/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com