gpt4 book ai didi

c++ - 如何将数据传递给引用包装器

转载 作者:行者123 更新时间:2023-11-28 04:26:49 24 4
gpt4 key购买 nike

考虑以下代码:

//option no 1
struct foo{
foo(baz &b) : _b(b){}

std::reference_wrapper<baz> _b;
};

//option no 2
struct bar{
bar(std::reference_wrapper<baz> b) : _b(b){}

std::reference_wrapper<baz> _b;
};

我想知道初始化 foobar 之间是否存在任何实际差异。如果是这样,每种解决方案的优缺点是什么,应该首选哪种?

最佳答案

至少与带有转换运算符的类型有区别:

struct tobaz
{
operator baz&() const { static baz b; return b; }
};

然后

foo{tobaz()}; // Compile
bar{tobaz()}; // Won't compile

因为只能发生一次用户转化。

Demo

错误会在结构的另一端发生 operator std::reference_wrapper<baz>() .

关于c++ - 如何将数据传递给引用包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54100054/

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