1
#include <vector>
#include <iostream>
#include "boost/function.hpp"
template <class T1, class T2, class T3>
static void
FOREACH (T1 cont, boost::function<T2(T3)> callback) {
typename T1::iterator it = cont. begin();
for (; it != cont. end(); it++) {
callback (*it);
}
}
static void
Print (int number)
{
std:: cout << number << std:: endl;
}
int main()
{
std:: vector<int> vec;
for (int i=1; i <= 10; ++i) vec. push_back (2*i);
FOREACH (vec, fun);
return 0;
}
Почему код выше не компилируется? Если я создаю специализированную версию, как показано ниже, она работает нормально.boost :: функция с функциональными шаблонами
static void
FOREACH (std:: vector<int> cont, boost::function<void(int)> callback) {
std:: vector<int>:: iterator it = cont. begin();
for (; it != cont. end(); it++) {
callback (*it);
}
}
Пожалуйста, скажите мне, как я могу использовать функцию boost :: с шаблонами функций?
Это не помогает, что 'fun' не был объявлен. – juanchopanza
«забава» - это опечатка, это «Печать» –