deducción de plantilla en dynamic_cast
-
23-09-2019 - |
Pregunta
Tengo una clase que se define como la siguiente:
template <class WidgetType>
class CometWidget : public WidgetType;
Dentro de una función que estoy haciendo esto:
dynamic_cast<CometWidget *>(iter2->second.second)->changesCommited_();
y resuelve el tipo CometWidget
, cumple y funcionar correctamente.
Las carreras de código dentro de la clase CometWidget
.
¿Cómo diablos sucede esto?
¿Por qué es así? En caso de que incluso compilar?
Solución
Si está dentro de la declaración de CometWidget
entonces no es necesario para calificar explícitamente la plantilla (o cualquier término que se utiliza para decir CometWidget<...>
).
Otros consejos
muy interesante. Me parece como un error de compilador interesante.
Es posible deducir el argumento correcto de la CometWidget <> plantilla - de la misma manera se puede deducir de los parámetros de plantilla en función de la lista de argumentos. Si sería vaciado estático, sería menos sorprendente.
Con elenco dinámico, hay poca espera que sea en común entre la fuente y el tipo de destino. Así, por ejemplo "adivinar" podría haber ocurrido, pero entonces no es un ser que le corresponde.
¿Qué compilador es esto?