Пакет параметров вариативного шаблона расширяется для вызовов функций

Я ищу что-то вроде этого:

template< typename T>  
void func(T t)
{
}

template< typename... Parms> 
void anyFunc( Parms... p)
{
    func<Parms>(p)... ;  //error 
    func(p)... ;         //error 
}

Если расширение пакета параметров выполняется внутри другого вызова функции, оно работает:

template< typename T>
int some(T t)
{}

template< typename... Parms>
void func(Parms ...p)
{}

template< typename... Parms>
void somemore(Parms... p)
{
   func( some(p)...);
}

int main() 
{
 somemore(1,2,3,4,10,8,7, "Hallo");
}

Расширение пакета параметров также будет работать для списка базового класса инициализаторы.

Есть ли какое-нибудь решение, которое также будет работать для функций, возвращающих 'void'. Вышеупомянутый обходной путь не сработает, хотя вызовы функций, возвращающие void внутри списка параметров, никогда не сработают.

Есть идеи?

17
задан Dolanor 26 April 2013 в 16:46
поделиться