- 
                Notifications
    
You must be signed in to change notification settings  - Fork 3.3k
 
Open
Description
template <class InputIter, class ForwardIter>
ForwardIter unchecked_uninit_copy(InputIter first, InputIter last, ForwardIter result, std::false_type)
{
auto cur = result;
try
{
for (; first != last; ++first, ++cur)
{
mystl::construct(&*cur, *first);
}
}
catch (...)
{
for (; result != cur; --cur)
mystl::destroy(&*cur);
}
return cur;
}
个人感觉在异常处理的for循环中,--cur应该放在函数体内,不然销毁的位置不对。
参考了STL中的实现,是++result到cur:
__destroy(_ForwardIterator __first, _ForwardIterator __last)
{
for (; __first != __last; ++__first)
std::_Destroy(std::__addressof(*__first));
}
初学者刚看到这里,不对还请指正
Metadata
Metadata
Assignees
Labels
No labels