Мне кажется, что вам просто не хватает расширения пакета параметров в параметрах функции. Кроме того, существует небольшая опечатка (p
-> P
), и вы, похоже, намереваетесь использовать выражение сгиба для выполнения функции для всех типов, имеющих немного другой синтаксис:
template<typename ... P>
void foo(C<P...> &c1, C<P...> &c2)
{
// Parentheses and comma required to signify fold expression using the comma operator
( doSomething<P>(), ... );
}
Мне также кажется, что вы захотите передать c1
и c2
на doSomething
(что, вероятно, должно принимать объекты как T&
, я полагаю?), В противном случае эта функция будет зависеть только от типа, не фактический объект этого типа.