如何编写一个便携式容器,它与MSVC++的已检查迭代器功能相关?

Bil*_*eal 5 c++ containers stl visual-c++

我出于各种原因定义了一种新型容器.我想大致类似于std::vector界面; 它只是恰巧,枚举目的,我可以离开wchar_t *wchar_t const*我的iterator类型,const_iterator分别型.(这个容器是一个"视图",位于其他更大的数据结构之上,恰好有一个矢量兼容的接口)

但是,如果我这样做,使用MSVC++的用户将会从算法中获得疯狂的警告std::copy,除非他们定义_SCL_SECURE_NO_WARNINGS.这是一件好事 - MSVC++的检查迭代器功能可以保护用户免受调试模式中的各种错误.我想通过在需要时实现这样的检查功能来兼容此功能.这留下了几个问题:

  1. VC的stdext::checked_iterator类在其构造函数中接受一个容器.该容器是否必须是内置的STL容器类型之一?
  2. 如何禁用检查的迭代时_ITERATOR_DEBUG_LEVEL0
  3. 我怎么能这样做,容器可以移植到没有检查迭代器的其他编译器?(如果可能的话,我想避免两次实施整个事情)

提升解决方案是可以的.