Template-Funktions-Spezialisierung in Template-Klasse



  • stefanjann schrieb:

    Wofür brauche ich dann eigentlich das template<> noch, wenn ich doch mit einer Überladung genausoweit komme.

    WAs mich gerade verwirrt, ist, ob du mit diesem template<> explizite instantiierung meinst. Also so etwas:

    template<class T, class Allocator>
    class vector { /* ...*/ };
    
    template
    class vector<int, std::allocator<int> > {/* ... */};
    

    Edit: Hat seldon schon gesagt. Du kannst natürlich auch sowas machen:

    #include <iostream>
    using std::cout;
    
    template<typename type>//Mit templates
    void func(type const& ref)
    {
          std::cout << ref << '\n';
    }
    
    void func(int a)//Hier komplett ohne templates
    {
          std::cout << a << '\n';
    }
    
    int main()
    {
          func<int>(5);
          func(1);
    }
    

    Edit: Hier könnte der Parameter deduziert werden, aber trotzdem :p


Anmelden zum Antworten