gpt4 book ai didi

c++ - 间接运算符的定义质量是什么?

转载 作者:行者123 更新时间:2023-11-30 03:39:36 25 4
gpt4 key购买 nike

<分区>

我有代码,我可以查询一个 std::set 类型的对象的结构,这些对象都符合某些条件。我经常希望我的查询条件是这样的:代码返回一个只包含一个对象的集合。在这些情况下,如果查询没有只产生一个结果,我会希望我的代码失败。所以我想做一个函数

A& deref_or_throw(std::set<A> s)
{ if (s.size() != 1) throw ...; return *s.begin(); }

如果集合包含多个(或没有)元素,则抛出异常,否则取消引用第一个元素。

为简洁起见,我想重载未为 std::set 定义的间接运算符:

A& operator*(std::set<A>& s) {return deref_or_throw(s);}

这是个坏主意吗?它确实符合执行取消引用的间接运算符的概念。但是我找不到一个严格的定义来说明间接运算符应该根据标准做什么,以确保我是否在歪曲它的标准用法(太过分了)。

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