C++ 如何在g+中实现uu的可复制性+;stl?

C++ 如何在g+中实现uu的可复制性+;stl?,c++,stl,C++,Stl,在stl算法中,当值类型为平凡可复制时,复制算法将使用memmove来加速此操作。我发现在文件“type_trait”中,它使用以下代码来检查对象是否可以复制: template<typename _Tp> struct is_trivially_copyable : public integral_constant<bool, __is_trivially_copyable(_Tp)> { }; 模板 结构是可复制的 :公共积分常数 { }; 问题1:哪里实现了可复

在stl算法中,当值类型为平凡可复制时,复制算法将使用memmove来加速此操作。我发现在文件“type_trait”中,它使用以下代码来检查对象是否可以复制:

template<typename _Tp>
struct is_trivially_copyable
: public integral_constant<bool, __is_trivially_copyable(_Tp)>
{ };
模板
结构是可复制的
:公共积分常数
{ };
问题1:哪里实现了可复制?我使用grep搜索整个“include”目录,但找不到可复制的定义


问题2:stl如何检查开始迭代器和结束迭代器之间的内存分配是否连续?例如,如果迭代器属于dequeue,那么我们必须为每个元素调用move操作,而不是像vector或array那样只调用一个memmove<代码>\uu是可复制的是编译器的固有特性。没有真正的方法(在语言中)来判断任意类型是否是可复制的


A2:标准库查看迭代器是否是原始指针(与某些类相反)。如果迭代器是指针,那么内存是连续的。(其他迭代器类型可能支持连续内存,但通常无法检测到这一点)

根据在
(…)
中传递的类型参数而不是
,它内置在编译器中。在C++20中有
std::contracting_iterator_tag
,迭代器可以使用它来指示它们是连续的。