问题:我需要一个函数对象A
来递归 boost::tuple 的数据类型,但对传入成员的所有其他数据类型执行其他操作t
。
class A{
public:
template<typename T>
void operator()(T& t) const{
// if (t == tuple){
// recurse
// } else{
// doSomething
// }
}
};
class B{
void init(){
boost::tuple<int, float> a;
boost::tuple< boost::tuple<int, std::string>, float > b;
boost::fusion::for_each(a, A());
boost::fusion::for_each(b, A());
}
};
我尝试的是为声明之上的所有可能的传入数据类型设置静态函数,A
但我无法返回递归函数,因为这些静态不知道class A
. true
我的第二种方法是为 boost::tuple 和任何其他返回的所有可能的数据类型实现静态函数false
(与示例中的非常相似)。但是我无法实现for_each
调用,因为(即使它被 if 案例包装)我的 IDE 说没有匹配的函数调用(对于int
,float
和的类型是正确的string
)。