template c++ templates c++11 template-specialization variadic-templates

template c++



Especialización de plantillas con plantillas variad. (1)

La sintaxis es correcta (afaik y clang ++ la acepta), pero es probable que su compilador no esté actualizado aún.

Si usa gcc, su soporte de plantillas variadas es bastante incompleto, e incluso las versiones svn muy recientes todavía no admiten la especialización (así es como se usa la tecnología de vanguardia, y lamentablemente gcc implementó solo una plantilla variada incompleta muy temprana propuesta y desde entonces no se mantuvo mucho, mientras que el clang comenzó bastante tarde, pero se completó bastante)

template <size_t size, typename ...Params> void doStuff(Params...) { } template <> void doStuff<size_t(1), int, bool>(int, bool) { } int main(int, char**) { doStuff<1,int,bool>(1, false); return 0; }

Esto no se compila, la segunda declaración doStuff me da un error: template-id ''doStuff<1u, int, bool>'' for ''void doStuff(int, bool)'' does not match any template declaration pero claramente coincide con la primera declaración con argumentos variad de la plantilla.

¿Cómo especializar las plantillas variad?