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

用户名
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>();

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

内森·奥利弗

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

// 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C ++中没有匹配的构造函数来初始化可变参数模板

在C ++中可变参数模板中是否有对函数参数实施类型限制的好方法?

C ++可变参数模板参数方法传递给没有可变参数的方法

用可变参数模板在C ++中包装函数指针

获取在C ++ 11中具有可变参数模板的函数的地址

C ++:如何在可变参数模板参数上调用带有类型参数的函数?

C ++ 11:可变参数模板函数参数的数量?

C ++:具有可变参数模板的成员函数指针参数

如何在C ++中存储可变参数模板参数?

C ++可变参数模板参数的数量

C ++可变参数模板:无法匹配函数

C ++:可变参数模板和函数重载

调用类内的函数的C ++ 11可变参数模板

通过可变参数模板的C ++ 11构造函数继承

C ++ 11可变参数模板函数存储

C ++模板元编程,带有可变参数模板以执行结构中特定成员的操作

在C ++中使用带有参数类型检查的可变参数模板在编译时获取函数的参数数量

具有依赖类型的c ++ 11可变参数函数模板是否不明确?

具有双打的C ++可变参数模板

C ++创建具有可变参数模板方法的接口

具有元组的C ++可变参数模板

在C ++中的可变参数模板中获取可变参数size_t ...参数的总和

如何专门化C ++中的可变参数模板函数?

如何在C ++中调用可变参数模板构造函数?

编译器跳过C ++中的可变参数模板/函数

C ++ 11中的可变参数模板和多重继承

无法理解C ++中的可变参数模板

在 C++ 中扩展多模式可变参数模板

C ++在可变参数模板中获取许多元素