如何从variadic模板参数中删除元素?

问题描述 投票:0回答:2

我正在尝试删除可变参数模板参数的第一个元素。代码如下:

template<typename ...T>
auto UniversalHook(T... args)
{
    //I want to remove the first element of `args` here, how can I do that?
    CallToOtherFunction(std::forward<T>(args)...);
}
c++ visual-c++ c++17 variadic-templates
2个回答
4
投票

如何尝试直接方法。

template<typename IgnoreMe, typename ...T>
auto UniversalHook(IgnoreMe && iamignored, T && ...args)
{
    //I want to remove the first element of `args` here, how can I do that?
    return CallToOtherFunction(std::forward<T>(args)...);
}

(也固定使用转发参考,并添加了明显的return


0
投票

我得到了一点帮助,找到了解决方案:

int main()
{
    Function(3,5,7);
    return 0;
}
template<typename ...T>
auto CallToAnotherFunction(T&&... args) 
{
    (cout << ... << args);
}

template<typename ...T>
auto Function(T&&... args) {
    /*Return is not needed here*/return [](auto&& /*first*/, auto&&... args_){ 
        return CallToAnotherFunction(std::forward<decltype(args_)>(args_)...); 
    }(std::forward<T>(args)...);
}

//Output is "57"
© www.soinside.com 2019 - 2024. All rights reserved.