Apply function on each element in parameter pack

南楼画角 提交于 2019-12-04 02:51:40
Vittorio Romeo
template<typename ... Args>
void doSomething(Args ... args) {
  something(convert(args)...);
}

Where something(convert(args)...) is a parameter pack expansion that expands to:

// pseudocode
something(convert(arg0), convert(arg1), convert(arg2), ...)

BTW, you might want to take args by forwarding references in order to avoid unnecessary copies and to properly propagate lvalue references:

template<typename... Args>
void doSomething(Args&& ... args) {
  something(convert(std::forward<Args>(args))...);
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!