Template funkcji porównującej w sort

0

Mam taki kod :

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdlib>

using namespace std;


template <class parametr_1, class parametr_2>
bool compare(parametr_1 argument1, parametr_2 argument2)
{
    return argument1 > argument2;
}

int main()
{

    vector<int> wektor_int(1);

    srand(time(NULL));

    for (int i = 1; i <= 10; i++)
    {
        wektor_int.push_back(rand()%100);
    }

    sort(wektor_int.begin(),wektor_int.end(),compare);

    for (vector<int>::iterator iterator = wektor_int.begin(); iterator != wektor_int.end(); iterator++ )
    {
        cout<<*iterator<<endl;
    }


    return 0;
}

Chciałbym żeby funkcja compare dobrała sobie typ danych na których będzie operować w zależności od tego jakie dane dostanie. Zrobiłem szablon (znam przeciążanie funkcji ale chciałbym zrobić to w ten sposób), jednak sort nie chce przyjąc funkcji z szablonu... Od kompilatora dostaję :

error: no matching function for call to ‘sort(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, <unresolved overloaded function type>)’|

Będę wdzięczny za wszelkie sugestie, w jaki sposób można to wykonać.

0
sort(wektor_int.begin(),wektor_int.end(),compare<int,int>);

No bo na podstawie czego ma sobie ten compare wydedukować typ argumentów? Jak byś miał w kodzie wywołanie tej szablonowej funkcji to na bazie argumentów mógłbyś mieć dedukcję, ale w tym przypadku nie bardzo.

0

Dzięki za szybką i dobrą odpowiedź :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1