c ++ variadic模板到AND语句中

时间:2018-01-23 12:59:19

标签: c++ templates if-statement variadic

我正在尝试在&&&&声明,但我不知道如何实际做到这一点。有人可以向我解释我如何编程这样的函数:

using EntitySet = std::vector<Entity>;
template<typename... TArgs>
EntitySet getEntitesWith()
{
    EntitySet entitySet;
    for(const Entity& entity : m_entitySet)
    {
        if (entity.hasComponent<T1>() && entity.hasComponent<T2>() && ...)
        {
            entitySet.push_back(entity);
        }
    }
    return entitySet;
}

entity.hasComponent&lt;&gt;()如果实体具有传递给函数的类型的Component,则返回true

编辑:

我刚刚在c ++ 17中试过折叠表达式,当我试图像@Igor Tandetnik那样做时,@ isyn告诉我,我得到了一个意外的...令牌错误。 但是当我写这样的代码时:

if (( ... && entity.hasComponent<TArgs>()))

使用额外的()我得到了内部编译器错误,并且不知道我做错了什么。 有人知道为什么会这样吗?

0 个答案:

没有答案