ForwardIterator和OutputInterator不兼容
__uninitialized_fill_n_aux函数的返回值类型是ForwardIteratortemplate <class ForwardIterator, class Size, class T>inline ForwardIterator__uninitialized_fill_n_aux(ForwardIterator first, Size n, const T& x, __true_type) { return fill_n(first, n, x);}//迭代器类型是OutIterator,注意:输出迭代器和前向迭代器无关。这里返回的类型是不是匹配了?????不匹配,为什么代码要这么写?????非常奇怪template <class OutputIterator, class Size, class T>OutputIterator fill_n(OutputIterator first, Size n, const T& value) { for ( ; n > 0; --n, ++first) *first = value; return first;}template <class ForwardIterator, class Size, class T>ForwardIterator __uninitialized_fill_n_aux(ForwardIterator first, Size n, const T& x, __false_type) { ForwardIterator cur = first; __STL_TRY { for ( ; n > 0; --n, ++cur) construct(&*cur, x); //构造 return cur; } __STL_UNWIND(destroy(first, cur)); //析构}//__STL_UNWIND这个宏表示什么意思,这是定义# define __STL_UNWIND(action) catch(...) { action; throw; }一般catch括号中必须注明异常的类型。结果它定义的宏中没有定义。,这是什么异常用法,从来没见过