比较参数包?扩展语法
Comparing a parameter pack? Expansion syntax?
考虑以下代码:
#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 };
}
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 是否可以通过C++扩展强制多个python进程共享同一内存
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 扩展光电二极管探测器以支持多个传感器
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- C++中的VLA,扩展名为std=C++11
- C++异常类扩展语法
- 模板参数包扩展语法的理由
- 扩展现有的 Spirit 语法(AST 和 skipper 的问题)
- 宏扩展中的语法错误
- 我可以让 vim 在没有扩展名的标头上C++语法突出显示吗?
- 比较参数包?扩展语法
- 扩展两个类的参数的语法
- 使用更好的语法/命名扩展特征