所以,我已经有一个可行的解决方案,但我想知道是否有任何其他方法来处理这个问题,以防我错过了一些明显和简单的东西。
我想表达什么
if((a==c)||...)
,其中c
为参数包,a
为变量。基本上我想把它展开为
if( (a == c1) || (a == c2) ... etc)
作为MRE
template <typename A, typename... C>
void foo(A a, C... c) const
{
if((a == c)||...)
return;
}
我最终采用的解决方案是
if (
[](auto a, auto c1, auto c2)
{
return a.value == c1 || a.value == c2;
}(a, c...))
我想表达什么
if((a==c)||...)
,其中c是参数包,a是变量。基本上我想要它扩展到
if( (a == c1) || (a == c2) ... etc)
c++的17倍表达式应该足够了,这将展开你所期望的
template <typename A, typename... C>
void foo(A a, C... c)
{
if(((a == c)|| ...))
return;
}
演示