可变参数模板和omp任务

时间:2016-11-04 13:10:29

标签: c++11 openmp variadic-templates variadic-functions

我正在寻找一种可能的解决方案来优雅地包装OpenMP任务,特别是指令。在OpenMP任务中,参数必须与关键字inoutinout类似:

#pragma omp task inout(x) out(y)
plus_equal(x,y); // x+=y

很好,但我正在寻找一种自动解决方案,以避免为每个函数引入指令,我正在考虑使用可变参数模板:

template<class Functor, class... Args>
void helper (Functor& f, Args&... args){
    #pragma in(SOMETHING), inout(SOMETHING ELSE) 
    f(args...);
}

客观地说&#34;胶水&#34;如果参数是const,则可变参数模板和参数之间应该是const关键字:它是in否则它是inoutout(客观上没有解决方案来区分ininout)然后我的代码变为:

helper(plus_equal, x,y);

阅读一些帖子,似乎可以提取可变参数模板的参数,并且可以使用constnon conststd::is_const之间提取参数。 但是我不知道我们是否可以将非基本内容传递给指令。我认为它应该是可能的,因为它是一个宏。

但是,我不确定这种解决方案是否存在。

有什么想法吗?

最佳,

++吨

0 个答案:

没有答案