Frage zu Templates und Überladung
-
Hallo!
Könnt ihr mir folgendes Verhalten erklären?
template<typename T> void Func(T value); void Func(const unsigned char* val); void Func(const std::string& val); const unsigned char* cuc = 0; unsigned char* uc = 0; Func(cuc); // non-template Func(uc); // template const std::string cs; std::string s; Func(cs); // non-template Func(s); // non-template, aber warum?
Danke!
-
Binden an eine Referenz und Kopieren eines Wertes sind bzgl. Überladungsauflösung gleichrangig. Das macht eine Menge SInn: Letzteres involviert ja bei Klassen den Aufruf des Copy- oder Move-Ctors, und für dessen Aufruf muss ja auch eine Referenz gebunden werden.