比较参数包?扩展语法?

时间:2015-12-15 06:26:01

标签: c++ templates c++11

考虑以下代码:

#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之类的内容,但似乎无法获得正确的语法。谢谢!

1 个答案:

答案 0 :(得分:1)

  

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

一种选择是使用更简单的功能:

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