我有一個提升的定義如下::函數對象:的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);
任何想法任何人?