1
我想实现这样的事情:调用(回调)的模板类模板参数
template<class IT>
size_t foo(IT begin,IT end) {return end-begin;}
template<template (class) class FOO>
class BAR
{
public:
any_container<any_type> container;
size_t call_foo
{
FOO<any_container<any_type>::iterator>(container.begin(), container.end());
}
};
此外,我希望能够传递功能,拉姆达或函数对象为FOO
。 这里应该使用std::function
,但不可能用任意类型T
来声明std::function<size_t(T,T)>
。 我绝对不想在模板BAR参数列表中指定内容器或其迭代器的类型。
有什么办法可以用优雅的方式解决这个问题吗?基于您的评论
你知道的std ::'开始'和'std :: end'? – 2013-05-13 10:58:50
在你的例子中'foo()'的目的是什么?什么是'any_container'? – 2013-05-13 11:09:28
BAR是通用协议实现,foo是系统相关的低层发送或接收实现。 std :: begin和end如何提供帮助? – ardabro 2013-05-13 11:18:40