C ++ шаблонные параметры - PullRequest
       3

C ++ шаблонные параметры

1 голос
/ 17 февраля 2020

Мне интересно, как я могу указать тип шаблона как «пакет параметров».

Комментированная строка не работает, потому что не может вывести 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 как типа.

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Вам не нужно указывать аргумент шаблона пакета параметров, поскольку он может быть выведен из аргументов функции. Так что просто укажите 1-й аргумент шаблона (и вы должны сделать это, потому что T может быть выведено из ниоткуда). Например,

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

Если вы хотите явно указать аргумент шаблона пакета параметров, вы можете написать его как

return addComponent<T, Args...>(std::forward<Args>(args)...);
//                     ^^^^^^^
0 голосов
/ 17 февраля 2020

Это сработало, когда я установил для Visual Studio «Conformance Mode» значение «Нет»

...