stl_construct.h
作用:
对已分配的内存进行调用构造函数和析构函数操作
调用构造函数
::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...);
以_p指针所指向的地址,使用_T1类型的构造函数(入参_args)进行初始化,即_p可以作为_T1类型使用了
调用析构函数
std::_Destroy_aux<__has_trivial_destructor(_Value_type)>:: __destroy(__first, __last);
__has_trivial_destructor(_Value_type)作用:内置函数,判断_Value_type类型是否有无价值的析构函数,如int则有无价值的析构函数,而正常的class类型则没有无价值的析构函数
对于有无价值的析构函数,不做析构函数调用处理
__destroy(_ForwardIterator, _ForwardIterator) { }
对于没有无价值的析构函数,做析构函数的调用处理
for (; __first != __last; ++__first)
std::_Destroy(std::__addressof(*__first));
}
析构函数调用
template<typename _Tp>
inline void _Destroy(_Tp* __pointer)
{ __pointer->~_Tp(); }