/*!
* @concept RootedIteratorConcept
*
* @extends ForwardIteratorConcept
*
* @brief Iterator that knows its container.
*
* @signature RootedIteratorConcept<T>
*
* @mfn RootedIteratorConcept#Container
*
* @brief Metafunction that returns the container of an iterator.
*
* @signature Container<TIterator>::Type
*
* @tparam TIterator The type of the iterator to query for its container.
*
* @return Type The type of the container for <tt>TIterator</tt>
*
* @fn RootedIteratorConcept#container
*
* @brief Returns the container.
*
* @signature TContainer container(it);
*
* @param[in] it The iterator to get the container of.
*
* @return TContainer The container of the iterat.r
*
* @fn RootedIteratorConcept#atBegin
*
* @brief Queries whether the rooted iterator is at the beginning of the
* container or not.
*
* @signature bool atBegin(it);
*
* @param[in] it The rooted iterator to query.
*
* @return bool Whether or not the iterator is at the beginning.
*
* @fn RootedIteratorConcept#atEnd
*
* @brief Queries whether the rooted iterator is at the end of the container or
* not.
*
* @signature bool atEnd(it);
*
* @param[in] it The rooted iterator to query.
*
* @return bool Whether or not the iterator is at the end.
*/