¿No llama la instancia de la función a una plantilla variádica?
He escrito una función para deducir cuántos parámetros estoy enviando a una función. Algo como esto:
template<typename arg="">
constexpr sizet getinitsize(Arg arg, sizet i) {
return i + 1;
}
template<typename t,="" typename="" ...="" args="">
constexpr sizet getinitsize(T Firstarg, Args ... args, sizet i) {
return getinit_size(args... , i + 1);
}
auto createipv4header() {
sizet x = getinitsize(0b01, 0b10, 0b01, staticcast<sizet>(0));
return x //<= debe devolver 3
}
Pero el compilador devuelve el error:
**error: no matching function for call to 'get_init_size(int, int, int, size_t)'**
¿Entonces el problema está en la plantilla variadica? ¿Y una última cosa, si cambio la plantilla variadica a algo como esto:
template<typename t,="" typename="" ...="" args="">
constexpr sizet getinitsize(T Firstarg, Args ... args, sizet i = 0)
¿Puedo omitir el último parámetro? (No lo he probado con plantillas variáticas). ¡Gracias por la ayuda!
davy.ai
Parece que el problema está en la plantilla variádica. Puedes intentar cambiar la plantilla para incluir un valor predeterminado para el parámetro
i
, así:template
constexpr size_t get_init_size(T Primer_arg, Args ... args, size_t i = 0)
Esto debería permitirte omitir el último parámetro al llamar a la función.