我有一个提升的定义如下::函数对象:的boost ::功能和多参数成员函数
typedef boost::function<std::string (std::string, std::string)> concat;
我通过这个功能结构构造函数的参数:
struct add_node_value_visitor : boost::static_visitor<>
{
typedef boost::function<std::string (std::string, std::string)> concat;
add_node_value_visitor(concat _func, std::string key) : _func_concat(_func), _key(key) {}
template <typename T>
void operator() (const T& value) const
{
std::string result = _func_concat(boost::lexical_cast<std::string, T>(value), _key);
}
std::string _key;
concat _func_concat;
};
现在我需要通过struct add_node_value_visitor
以下函数,但boost::function<T>
不接受2 arg成员函数,在它说我应该使用boost :: bind的文档,但我不知道我该怎么做,看到我也必须满足我的boost :: apply_visitor乐趣ction。
boost::apply_visitor(add_node_value_visitor(&Decomposer::ConcatValues, key), var); // ConcatValues takes 2 args, var = boost::variant
std::string ConcatValues(std::string str, std::string key);
任何想法任何人?