Dobrý večer přeji
Ještě před nedávnem jsem šablony absolutně neovládal. Nyní alespoň už trochu tuším o co se jedná. Prosím o drobné posunutí mého poznání osvětlením tohoto:
#include <iostream>
template<typename T> void zobraz(const T &);
int main()
{
auto prom_int = 7;
auto prom_long = 7L;
auto prom_p_int = &prom_int;
zobraz(prom_int);
zobraz(prom_long);
zobraz(prom_p_int);
return 0;
}
template<typename T> void zobraz(const T & ob)
{
std::cout << ob << " " << sizeof ob << std::endl;
}
U tohoto jsem se chtěl přesvědčit, že auto dělá co má, ale to není podstatné. Problémem u mě je to, že jsem se snažil vytvořit novou šablonu pro zobraz. Něco ve stylu
template<typename T> void zobraz(const T * p_ob)
{
std::cout << p_ob << " " << *p_ob;
std::cout << " " << sizeof *p_ob << std::endl;
}
Moje představa byla, že se pozná, že se při volání zobraz(prom_p_int) pozná, že se jedná o ukazatel a použije se druhá šablona. To jak jsem si všiml se neděje, prosím tedy o odpovědi na tyto otázky:
1) byla by vůbec někdy použita "nová" šablona?
2) lze nějak zařídit, aby pro libovolný ukazatel byla použita jedna šablona a pokud se o ukazatel nejedná, pak druhá?
pozn.: Jsem ve všem začátečník, doufám proto že jsem dotaz zformuloval srozumitelně. Každopádně díky za každou odpověď