I have the piece of code
Code:
#include<iostream>
#include<set>
using namespace std;
class Test
{
public:
int val;
};
class comp
{
bool operator()(Test a, Test b)
{
return a.val < b.val;
}
};
bool cmp(Test a, Test b)
{
return a.val<b.val;
}
int main()
{
set<Test,comp>s;
return 0;
}
It comiles fine
but
int main()
{
set<Test,cmp>s;
return 0;
}
gives following error
setTest.cpp: In function ‘int main()’:
setTest.cpp:26: error: type/value mismatch at argument 2 in template parameter list for ‘template<class _Key, class _Compare, class _Alloc> class std::set’
setTest.cpp:26: error: expected a type, got ‘cmp’
setTest.cpp:26: error: invalid type in declaration before ‘;’ token
My doubt is why we can only use functor and not predicate function.
because in algorithms we can use both functor and predicate.
help me understanding it..