Следующее TestClass
работает:
#include <iostream>
#include <boost/function.hpp>
#include <boost/bind.hpp>
void ext_fun(const float f, int i)
{
std::cout << f << '\t' << i << std::endl;
}
template <typename T>
class TestClass
{
public:
boost::function <void (const T)> test_fun;
};
int main()
{
TestClass<float> tt;
tt.test_fun = std::bind(ext_fun, std::placeholders::_1, 10);
tt.test_fun(2.1);
return(0);
}
Однако я бы предпочел определить test_fun
как шаблон функции-члена, т.е. что-то вроде
class TestClass
{
public:
template <typename T> boost::function <void (const T)> test_fun;
};
Но если я это сделаю, я получаю эту ошибку компилятора: «ошибка: элемент данных« test_fun »не может быть шаблоном элемента».
Можно ли определить шаблон функции-члена с помощью boost::function
? Если да, то как?
Спасибо
- Маттео
struct Foo { int a; };
вstruct Foo { template <typename T> T a; };
, чего вы не можете. - person Kerrek SB   schedule 11.01.2014boost::function
- person Matteo M.   schedule 11.01.2014