Este es el comunicado de la 03 C++ estándar, §14.7.1p5:Confundido sobre implícita de instancias de plantilla
Si el proceso de resolución de sobrecarga puede determinar la función correcta llamar sin crear instancias de una definición de plantilla de clase , es no especificado si esa instanciación realmente tiene lugar. [Ejemplo:
template <class T> struct S { operator int(); }; void f(int); void f(S<int>&); void f(S<float>); void g(S<int>& sr) { f(sr); // instantiation of S<int> allowed but not required // instantiation of S<float> allowed but not required };
- ejemplo extremo]
Soy incapaz de comprender este punto. ¿Tiene un comportamiento indefinido?
Encontré otro similar problem, que tampoco entiendo. Allí se explica que el comportamiento correcto no está definido, pero ¿qué significa eso?
aquí: MSVC: Implicit Template Instantiation, though templated constructor not used
Aunque las [definiciones C++] (http://stackoverflow.com/q/2047172/54262) podrían ayudarlo más que a C, ya que aparentemente tiene una copia del estándar C++. –
Conozco las advertencias de comportamiento no definidas/no especificadas/implementadas. Pero necesito una aclaración sobre este programa. –