【发布时间】:2013-05-07 09:15:01
【问题描述】:
我想实现这样的目标:
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());
}
};
此外,我希望能够将函数、lambda 或函数对象作为FOO 传递。
可能std::function 应该在这里使用,但不可能用任意类型T 声明std::function<size_t(T,T)>。
而且我绝对不想在模板 BAR 参数列表上指定内部容器的类型或其迭代器。
有什么方法可以优雅地解决这个问题吗?
【问题讨论】:
-
你知道
std::begin和std::end吗? -
您的示例中
foo()的目的是什么?any_container是什么? -
BAR 是通用协议实现,而 foo 是系统相关的低级发送或接收实现。 std::begin 和 end 有什么帮助?
标签: c++ templates c++11 generic-programming