gpt4 book ai didi

c++ - 某些东西可以绑定(bind)到非常量引用但不能绑定(bind)到常量引用的情况?

转载 作者:太空狗 更新时间:2023-10-29 20:20:47 26 4
gpt4 key购买 nike

最少的问题

请考虑以下功能:

class NonTrivialClass { /* ... */ };

void f1(NonTrivialClass &) {}
void f2(NonTrivialClass const&) {}

是否有表达式调用 f1其中一个无法替代 f1f2

上下文

在求职的前景中,我被要求“编写方法 double approx(vector<Point>& pts)(给出了 Point),它使用 pts 中的点数以类似 Buffon 的方式逼近已知常数。

我写了一个实现定义 double approx(vector<Point> const& pts) (注意 const )。由于尚未确定的原因,我没有通过测试!

在删除所有可能的解释后,我对测试平台和扣人心弦的 const 产生了怀疑。限定符...他们的测试程序是否有可能与 double approx(vector<Point>& pts) 一起工作?但不是 double approx(vector<Point> const& pts)

最佳答案

如果您的问题承认疯狂的答案:

struct NonTrivialClass {};
struct NonTrivialClass2 {
operator NonTrivialClass&();
operator NonTrivialClass const&();
};

void f1(NonTrivialClass &) {}
void f2(NonTrivialClass const&) {}

int main()
{
NonTrivialClass2 foo;

f1(foo);
f2(foo); // error: reference initialization is ambiguous
}

当然,这不适用于 vector<>案例(除非测试机器传递某种带有损坏的(可能是模板化的,sfinae-unfriendly-whatever)转换运算符到一些包装 vector 成员的“测试者”对象?似乎不合理......但并非不可能)

关于c++ - 某些东西可以绑定(bind)到非常量引用但不能绑定(bind)到常量引用的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48184795/

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