模板 的问题>> [

问题描述 投票:1回答:1
我尝试制作一个将在多个线程上运行for循环的函数。为了使该函数更好地与for循环中应使用的各种函数一起使用,我决定使用模板。对于每个函数的返回类型,我使用了一个简单的:

template <typename T>

这没有任何问题。但是对于函数可能需要的参数,我使用此模板构造:

template <typename ...Args>

所以现在我的代码看起来像这样:

template <typename T, typename ...Args> T threadedFor(T func(Args... args), Args... args, int nThreads, unsigned int max, unsigned int min = 0) { T result; /* ... */ return result; }

现在的问题是,我不知道如何在函数调用中传递Args... args。我尝试了几种方法,例如:

threadedFor(function(1), 4, 5, 0);

或此:

threadedFor(function, 1, 4, 5, 0);

假设我的论点是1。

也很高兴知道这个结构typename ...Args的名字,因为我在Google上找不到任何东西...

我尝试制作一个将在多个线程上运行for循环的函数。为了使该函数更好地与for循环中应使用的各种函数一起使用,我决定使用模板。 ...

c++ templates
1个回答
3
投票
感谢“ NathanOliver- Reinstate Monica”,我找到了此结构的名称,也找到了解决我问题的方法。参数包必须始终是函数的最后一个参数。所以像这样改变我的功能:
© www.soinside.com 2019 - 2024. All rights reserved.