现在,我有一个可以通过随机访问迭代器满足 API 要求的类。但是,我可以设想这样一种情况,即实现会发生变化,并且只能提供前向迭代器。
因此,我想限制调用者使用随机访问功能。我知道我可以编写自己的实现(例如,restricted_bar_iterator),但想知道是否有更简单的东西(即需要更少的编码)。
class BAR { ... };
class FOO {
public:
// Bad...clients may expect 'bar_iterator' to be random access...
typedef std::vector<BAR>::iterator bar_iterator;
bar_iterator begin_bar() const;
bar_iterator end_bar() const;
// Possible solution here!
class restricted_bar_iterator :
public std::iterator< std::forward_iterator_tag, BAR > { ... };
};
void baz()
{
FOO foo;
bar_iterator it = foo.begin_bar() + 5; // want a compile time error here!
}