gpt4 book ai didi

c++ - C++中没有参数可变参数模板函数

转载 作者:行者123 更新时间:2023-12-01 15:10:50 25 4
gpt4 key购买 nike

template <bool ...T> 
int some_function()
{
// this is the function with return type int
// I am not sure how to get the values into the function
}

// this is how I want to call the function
int temp = some_function<1,0,0,0>();

对函数声明有什么建议吗?

最佳答案

对于您的用例,您可以使用递归来完成您想要的事情。为此,您需要两个重载。一个只有一个 bool(boolean) 参数,另一个带有两个 bool(boolean) 参数加上可变参数部分。这样您就可以在遍历参数包的过程中分别访问每个值。在这种情况下,

// quick and dirty pow fucntion.  There are better ones out there like https://stackoverflow.com/a/101613/4342498
template <typename T, typename U>
auto pow(T base, U exp)
{
T ret = 1;
for (int i = 0; i < exp; ++i)
ret *= base;
return ret;
}

template <bool Last>
int some_function()
{
return Last;
}

template <bool First, bool Second, bool... Rest>
int some_function()
{
return First * pow(2, sizeof...(Rest) + 1) + some_function<Second, Rest...>();
}

int main()
{
std::cout << some_function<1,0,0,0>();
}

哪个输出:
8

关于c++ - C++中没有参数可变参数模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60711154/

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