que tiene una clase comoC++ explícita especialización de plantilla de constructor de plantilla de clase de plantilla
template <class T>
struct A{
template <class U>
A(U u);
};
me gustaría escribir una especialización explícita de este para una declaración como
A<int>::A(float);
En la siguiente prueba código, si comento la especialización, compila con g ++. De lo contrario, se dice que tengo un número incorrecto de los parámetros de plantilla:
#include <iostream>
template <class T>
struct A{
template <class U>
A(T t, U *u){
*u += U(t);
}
};
template <>
template <>
A<int>::A<int,float>(int t, float *u){
*u += float(2*t);
}
int main(){
float f = 0;
int i = 1;
A<int>(i, &f);
std::cout << f << std::endl;
return 0;
}
Por cierto, haga el parámetro 'U & u' en lugar de un puntero. Es más seguro y más fácil. – GManNickG