Ниже приведен простой пример с вещами, которые меня раздражают. Также ссылка на онлайн-компилятор c ++ с данным примером находится здесь https://ide.geeksforgeeks.org/oxQd8FU2NV
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template <class T>
void PrintF (const T& printInt) { cout << printInt << " "; }
template <class T>
class PrintClass {
public:
void operator()(T elem) const {
cout << elem << " ";
}
};
int main () {
vector<int> vect;
for (int i=1; i<10; ++i) {
vect.push_back(i);
}
for_each (vect.begin(), vect.end(), PrintClass<int>()); cout << endl;
for_each (vect.begin(), vect.end(), PrintF<int>); cout << endl;
// for_each (vect.begin(), vect.end(), PrintF<int>() );
// won't compile because of () in PrintF<int>()
return 0;
}
Почему мы не можем написать PrintClass<int>()
без (), например, PrintClass<int>
(первая строка for_each)?
И при использовании функции (не объекта функции) мы не должны использовать () (вторая строка for_each), поэтому мы пишем так PrintF<int>
?
Как мне интерпретировать / анализировать третий аргумент в этих двух функциях for_each?