invalid use of non-static member function

You must make Foo::comparator static or wrap it in a std::mem_fun class object. This is because lower_bounds() expects the comparer to be a class of object that has a call operator, like a function pointer or a functor object. Also, if you are using C++11 or later, you can also do as dwcanillas suggests and use a lambda function. C++11 also has std::bind too. Examples:

Fastest way to check if a file exist using standard C++/C++11,14,17/C?

Well I threw together a test program that ran each of these methods 100,000 times, half on files that existed and half on files that didn’t. Results for total time to run the 100,000 calls averaged over 5 runs, Method Time exists_test0 (ifstream) 0.485s exists_test1 (FILE fopen) 0.302s exists_test2 (posix access()) 0.202s exists_test3 (posix stat()) 0.134s The stat() function provided the … Read more

What does “missing template argument” mean?

I’m pretty new to C++ and this site so there are bound to be errors. When I try to compile my code I get errors like error: missing template argument before ‘b’. I’ve been searching the world for answers for hours and it has led me here. My assignment is to implement a templated class Collection … Read more

Argument list for class template is missing

First of all, this is how you should provide a definition for member functions of a class template: Secondly, those definitions cannot be put in a .cpp file, because the compiler won’t be able to instantiated them implicitly from their point of invocation. See, for instance,