gpt4 book ai didi

c++ - 递归调用可变参数模板函数重载时调用不明确

转载 作者:可可西里 更新时间:2023-11-01 18:38:19 26 4
gpt4 key购买 nike

<分区>

考虑这段代码:

template<typename FirstArg>
void foo()
{
}

template<typename FirstArg, typename... RestOfArgs>
void foo()
{
foo<RestOfArgs...>();
}

int main()
{
foo<int, int, int>();
return 0;
}

由于模棱两可的调用而无法编译 foo<RestOfArgs...>();什么时候RestOfArgs只有一个元素 ( {int} )。

但是编译没有错误:

template<typename FirstArg>
void foo(FirstArg x)
{
}

template<typename FirstArg, typename... RestOfArgs>
void foo(FirstArg x, RestOfArgs... y)
{
foo(y...);
}

int main()
{
foo<int, int, int>(5, 6, 7);
return 0;
}

为什么第一种情况有歧义?

为什么第二种情况没有歧义?

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