卡在TR1中,对于测试程序,我需要对特定类型的多个对象执行某些操作.我有几个元组类型定义,如下所示:
typedef std::tr1::tuple< bool,signed char,signed short,signed int,signed long long,unsigned char,unsigned short,unsigned int,unsigned long long > integral_types;
从每个元组类型创建一个对象.然后我有类似这样的功能模板:
template<typename T> void invoke_operation_1(T& obj);
需要为元组对象中的所有对象调用它们.
我如何在C 03中做到这一点?
解决方法@H_301_14@
如果需要为元组中的每个对象调用相同的模板化函数,则可以使用
boost::fusion.例如.
template<typename T>
void invoke_operation_1(T& obj)
{
std::cout << obj << std::endl;
}
struct executor
{
template<typename T>
void operator()(T& t) const
{
invoke_operation_1(t);
}
};
typedef boost::tuple< bool,unsigned long long > integral_types;
int main()
{
integral_types t(true,1,2,3,4,5,6,7);
boost::fusion::for_each(t,executor());
return 0;
}
template<typename T> void invoke_operation_1(T& obj) { std::cout << obj << std::endl; } struct executor { template<typename T> void operator()(T& t) const { invoke_operation_1(t); } }; typedef boost::tuple< bool,unsigned long long > integral_types; int main() { integral_types t(true,1,2,3,4,5,6,7); boost::fusion::for_each(t,executor()); return 0; }