我正在尝试在&&&&声明,但我不知道如何实际做到这一点。有人可以向我解释我如何编程这样的函数:
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>()))
使用额外的()我得到了内部编译器错误,并且不知道我做错了什么。 有人知道为什么会这样吗?