StackOverflow 喜欢将你的辛勤工作卖给 OpenAI

问题描述 投票:0回答:1

我想删除这个问题,但SO不允许我这么做,所以我会编辑它。

现在 StackOverflow 与 OpenAI 合作,我希望我们都能为自己作为某个愚蠢机器人的下属所做的辛勤工作感到自豪。

不管怎样,我出去了!再见!

c++ stl gsl
1个回答
3
投票

因为它使用的是 std::copy 的实现不知道的自定义迭代器

其实不然。标准库会看到这个成员并且对数据布局有相同的了解。

#if defined(__cpp_lib_ranges) || (defined(_MSVC_STL_VERSION) && defined(__cpp_lib_concepts))
    using iterator_concept = std::contiguous_iterator_tag;
#endif // __cpp_lib_ranges

更可能的原因是迭代器操作是在运行时检查的,而不是

std::span
的“误用时的未定义行为”。

如果您要读取超出

srcData
范围的内容,则使用
std::span
的行为是未定义的。使用
gsl::span
,定义行为,调用
std::terminate
。 “缺少优化”可能是因为
memcpy
超出范围的数据与调用
std::terminate

不同

srcData
具有任何元素时,您的示例代码会表现出未定义的行为,因为您无法写入超过向量的末尾。

© www.soinside.com 2019 - 2024. All rights reserved.