I tiene una clase A:conversión implícita a un objeto de C++ plantilla
template <typename T, int I> struct A {};
y una B. clase me gustaría objeto de de tipo B para convertir implícitamente a A cuando se administra como argumentos de la función. B es el siguiente:
template <typename T>
struct B {
operator A<T,0> &() const { return *new A<T,0>(); }
};
Sin embargo, mi prueba (continuación) falla con GCC 4.5, dando el error: función ninguna coincidencia para la llamada a 'prueba (B &)' dónde voy mal aquí? ¿Otros compiladores también rechazan esto?
template <typename T, int I>
void test(A<T,I> &a) { delete &a; }
int main(int argc, char *argv[])
{
B<int> b;
test(b);
return 0;
}
p.s. Ahora he puesto mi propia solución en una respuesta a continuación.
quiero señalar la pérdida de memoria, pero parece como si esto era poner juntos para mostrar el tema, así que no lo hará. Voy a votar mejor en su lugar. :-) – James
clase? -------- –
Gracias James :) Reparado. – user2023370