gpt4 book ai didi

c++ - C++模板打包参数

转载 作者:行者123 更新时间:2023-12-02 10:20:49 27 4
gpt4 key购买 nike

我想知道如何将模板类型指定为“参数包”。

带注释的行不起作用,因为它不能推导T(它具有相同的模板参数)。在下一行中,我可以通过提供T来解决此问题,但是我在如何提供参数包类型(问号所在的位置)方面陷入困境。

template<typename T, typename... Args> T& Entity::addComponent(Args&&... args) const
{
//return entityManager->addComponent(std::forward<Args>(args)...);
return entityManager->addComponent<T, ?????>(std::forward<Args>(args)...);
}

我想使用Args作为该类型。

最佳答案

您无需指定参数包模板参数,因为它可以从函数参数推导出来。因此,只需指定第一个模板参数(并且您必须执行此操作,因为T可以从任何地方推导出)。例如

return entityManager->addComponent<T>(std::forward<Args>(args)...);
// ^^^

如果要显式指定参数包模板参数,则可以将其写为
return addComponent<T, Args...>(std::forward<Args>(args)...);
// ^^^^^^^

关于c++ - C++模板打包参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60260635/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com