gpt4 book ai didi

c++ - 对 std::optional 使用 std::iter_swap

转载 作者:行者123 更新时间:2023-11-28 00:13:14 26 4
gpt4 key购买 nike

查看std::iter_swap reference我的结论是:

struct A {};
std::experimental::optional< A > x{A{}}, y{A{}};
std::iter_swap(x, y);

是合法的。是这样吗?

要求参数是 ForwardIterator 意味着它们应该只满足一个要求:在取消引用(迭代器)之后,传递的对象应该保持有效(可取消引用?)状态。理解对吗?

最佳答案

ForwardIterator concept比你说的更受限制。您的示例仅在使用类似此实现的情况下才有效:

template<class ForwardIt1, class ForwardIt2>
void iter_swap(ForwardIt1 a, ForwardIt2 b)
{
using std::swap;
swap(*a, *b);
}

但由于不能保证您实际上不应该使用 iter_swap 作为可选。你真的应该只使用 swap for optional

关于c++ - 对 std::optional 使用 std::iter_swap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31940181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com