C++ 如何将数据传递给引用包装器
考虑以下代码:C++ 如何将数据传递给引用包装器,c++,c++11,reference,reference-wrapper,C++,C++11,Reference,Reference Wrapper,考虑以下代码: //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; }; //选项1 结构foo
//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;
};
//选项1
结构foo{
foo(baz&b):_b(b){}
标准::参考包装器;
};
//方案二
结构条{
条(std::引用包装器b):\u b(b){}
标准::参考包装器;
};
我想知道初始化
foo
和bar
之间是否有实际区别。如果是的话,每种解决方案的优缺点是什么,应该优先选择哪一种 使用转换运算符的类型至少有区别:
struct tobaz
{
operator baz&() const { static baz b; return b; }
};
然后
因为只有一个用户可以进行转换
对于带有运算符std::reference\u wrapper()
的结构,另一侧将发生错误
foo{tobaz()}; // Compile
bar{tobaz()}; // Won't compile