假设我有一个返回一系列值的接口 . 该接口的实现可以使用不同的容器来提供这些数字 .

class MyClassI
{
public:
  virtual std::pair<std::vector<int>::iterator, std::vector<int>::iterator> Numbers() const = 0;
}

class MyClassC : public MyClassI
{
public:
  virtual std::pair<std::vector<int>::iterator, std::vector<int>::iterator> Numbers() const 
     { return std::make_pair(numbers.begin(), numbers.end(); }
private:
   std::vector<int> numbers;
}

我想知道是否有一种方法可以将容器类型“衰减”远离迭代器 .

class MyClassI
{
public:
  virtual std::pair<decayed_iterator, decayed_iterator> Numbers() const = 0;
}

我当然可以将原始迭代器放在堆上,我可以用模板类包装该指针,以便在值类型上提供迭代器 .

我想知道是否已经有类似的东西在助推器或其他东西 .

我可以想象像std / boost函数,其中可调用函数被衰减(如果它是函数或结构),并且“状态”部分存储在对象内部(如果它足够小),以避免堆分配 - 如果可能的话 .