所以我有一些类型X:
typedef ... X;
Run Code Online (Sandbox Code Playgroud)
和模板功能f:
class <typename T>
void f(X& x_out, const T& arg_in);
Run Code Online (Sandbox Code Playgroud)
然后是一个功能g:
void g(const X* x_array, size_t x_array_size);
Run Code Online (Sandbox Code Playgroud)
我需要编写一个variadic模板函数h来执行此操作:
template<typename... Args>
void h(Args... args)
{
constexpr size_t nargs = sizeof...(args); // get number of args
X x_array[nargs]; // create X array of that size
for (int i = 0; i < nargs; i++) // foreach arg
f(x_array[i], args[i]); // call f (doesn't work)
g(x_array, nargs); // call g with …Run Code Online (Sandbox Code Playgroud) 我有一个类的对象A,可以使用不同的类型调用,并在每次调用时返回自我更改.出于这个问题的目的,这样A做
struct A {
A call(const int&) {
}
A call(const string& s) {
}
////
} a;
Run Code Online (Sandbox Code Playgroud)
所以我有一个未知类型的元组:
std::tuple<Types...> t;
Run Code Online (Sandbox Code Playgroud)
我想a用每个元组元素调用,所以我希望得到类似的东西:
b = a;
b = b.call(get<0>(t));
b = b.call(get<1>(t));
b = b.call(get<2>(t));
//...
Run Code Online (Sandbox Code Playgroud)
要么
b = a.call(get<0>(t)).call(get<1>(t)).call(get<2>(t)...)
Run Code Online (Sandbox Code Playgroud)
订单并不是很重要(我的意思是,如果呼叫顺序被颠倒甚至改组,那就没关系).
我确实理解它可以用递归但它很难看.是否有可能在没有递归的情况下实现?