To stwierdzenie od standardowej C++ 03, §14.7.1p5:Confused o niejawny szablonu konkretyzacji
Jeśli proces rozdzielczości przeciążenie może określić prawidłową funkcję zadzwonić bez instancji definicję klasy szablonu , to jest nieokreślone, czy ta instancja faktycznie ma miejsce. [przykład:
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 };
- przykład koniec]
mogę zrozumieć ten punkt. Czy ma niezdefiniowane zachowanie?
Znalazłem inny similar problem, którego również nie rozumiem. Wyjaśniono, że prawidłowe zachowanie jest niezdefiniowane, ale co to znaczy?
tutaj: MSVC: Implicit Template Instantiation, though templated constructor not used
Chociaż [Definicje C++] (http://stackoverflow.com/q/2047172/54262) może pomóc mu bardziej niż C, ponieważ najwyraźniej ma kopię standardu C++. –
Znam nieokreślone/Nieokreślone/Ostrzeżenia o zachowaniu zdefiniowane w ramach implementacji ..Ale potrzebuję wyjaśnienia na temat tego programu .. –