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ここで使用する必要がありますがstd::function<size_t(T,T)>、任意の型で宣言することはできませんT。また、テンプレート BAR 引数リストで内部コンテナーのタイプまたはそのイテレーターを指定したくありません。

これをエレガントな方法で解決する方法はありますか?

4

1 に答える 1