比较参数包?扩展语法

Comparing a parameter pack? Expansion syntax?

本文关键字:扩展 语法 参数 比较      更新时间:2023-10-16

考虑以下代码:

#include <utility>
class foo 
{
private:
    struct s 
    {
        int value;
        s* p2;
    } *p;
public:
    foo() : p(new s{ 0, nullptr }) {}
    template<class... Args>
    void fun(Args&&... val) 
    {
        if (val > p->value) //point of interest
            p->p2 = new s{ { std::forward<Args>(val)... }, nullptr };
    }
};
int main()
{
    foo o;
    o.fun(34);
}

如何让val > p->value工作?我尝试了val... > p->value{ val... } > p->value之类的东西,但似乎无法获得正确的语法。谢谢

我该如何让val > p->value工作?

一种选择是使用一个简单得多的功能:

void fun(int val) 
{
    if (val > p->value)
        p->p2 = new s{ val, nullptr };
}