私はこのようなことを達成したいと思います:
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
ここで使用する必要がありますがstd::function<size_t(T,T)>
、任意の型で宣言することはできませんT
。また、テンプレート BAR 引数リストで内部コンテナーのタイプまたはそのイテレーターを指定したくありません。
これをエレガントな方法で解決する方法はありますか?