相关疑难解决方法(0)

如何将元组扩展为可变参数模板函数的参数?

考虑具有可变参数模板参数的模板化函数的情况:

template<typename Tret, typename... T> Tret func(const T&... t);
Run Code Online (Sandbox Code Playgroud)

现在,我有一个t价值元组.如何func()使用元组值作为参数调用?我已经阅读了bind()函数对象,call()函数,以及apply()不同的一些现在过时的文档中的函数.GNU GCC 4.4实现似乎call()bind()类中有一个函数,但是关于这个主题的文档很少.

有些人建议使用手写的递归黑客,但可变参数模板参数的真正价值在于能够在上述情况下使用它们.

有没有人有解决方案,或提示在哪里阅读它?

c++ arguments tuples c++11

127
推荐指数
6
解决办法
4万
查看次数

将std :: array作为模板可变参数函数的参数传递

我试图了解C++ 11中的可变参数模板.我有一个类,它基本上是一个包装器std::array.我希望能够将函数对象(理想情况下为lambdas)传递给成员函数,然后将std::array传递的元素作为函数对象的参数.

我用a static_assert来检查参数的数量是否与数组的长度相匹配,但我想不出将元素作为参数传递的方法.

这是代码

#include <iostream>
#include <array>
#include <memory>
#include <initializer_list>

using namespace std;

template<int N, typename T>
struct Container {
    template<typename... Ts>
    Container(Ts&&... vs) : data{{std::forward<Ts>(vs)...}} {
        static_assert(sizeof...(Ts)==N,"Not enough args supplied!");
    }

    template< typename... Ts>
    void doOperation( std::function<void(Ts...)>&& func )
    {
        static_assert(sizeof...(Ts)==N,"Size of variadic template args does not match array length");

        // how can one call func with the entries
        // of data as the parameters (in a way generic with N) …
Run Code Online (Sandbox Code Playgroud)

c++ templates variadic-templates c++11

9
推荐指数
1
解决办法
3380
查看次数

标签 统计

c++ ×2

c++11 ×2

arguments ×1

templates ×1

tuples ×1

variadic-templates ×1