函数f
接收使用transform
函数可以转换为Wrapper
的参数,它必须调用f2
。 f2
收到一个varidic数量的包装类似的参数。如何将可变参数模板参数转换为另一种类型以调用另一个函数?
template <typename T>
Wrapper transform(T&& value) {
return Wrapper(std::forward<T>(value));
}
template <typename... Args>
Wrapper f2(Args&&... args) {
// All arguments must be Wrappers
// More code
}
template <typename... Args>
Wrapper f(Args&&... args) {
// Arguments can be transform to Wrapper using a transform function.
return f2(/* For each arg in args -> transform(std::forward<Args>(args)...)*/); // Problem!
}
正常是之前和直接调用f2
变换的参数,但我不希望暴露transform
功能公众。
有没有办法实现这一点,而不会暴露transform
函数?
你有没有试过返回f2(transform(std :: forward(args))...)? –
linuxfever
@ chema989 - 对不起,但我不知道...从linuxfever的建议看起来我是正确的:用'f2(变换(std :: forward(args))...)','f2()'被称为用一系列'wrapper's并且完全匹配你的'f2()'签名。 –
max66
@ max66我会检查你的答案。 – chema989