I think the problem is that Iterator and ConstIterator map to fundamentally different types that are not easily convertible due to differing template parameters to BasicIterator. The easiest solution may be to provide two copy and assignment methods for Basiciterator explicitly allowing each one. For example:
^BasicIterator(const BasicIterator<typename BucketVec: :iterator, typename Bucket::iterator>& it);
BasicIterator(const BasicIterator<typename BucketVec: :const_iterator, typename Bucket::const_iterator>& it);^
I think the STL extension hash_map solves this problem but not using other STL containers for the bucket list and bucket contents.
Is there a way to drop in code blocks where < and : : doesn't drive the markup engine crazy?