问题标签 [reference-wrapper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1294 浏览

c++ - 传递对可变参数模板的引用使用 std::reference-wrapper

我尝试将引用列表传递给可变参数模板函数并将其传递给另一个函数。我写的代码如下:

然后我以这种方式调用函数调用者:

编译器给我以下错误:

我错过了什么?

0 投票
0 回答
821 浏览

c++ - 以 std::reference_wrapper 作为成员的默认构造函数?

我有这个结构:

但是,现在我想使用 a tbb::concurrent_bounded_queue<MyStruct>,这是不可能的,因为MyStruct没有默认构造函数。但我不知道如何定义它,因为wrapper必须以某种方式初始化。有没有解决方案(除了使用原始指针)?

tbb错误(在哪里FindAffineShapeArgsMyStruct

0 投票
1 回答
1479 浏览

c++ - C++如何使用reference_wrapper的向量

我对reference_wrapper完全陌生,所以我需要一个非常简单的例子来理解,拜托。

我声明了两个向量:

我用一些值填充 vec,然后我希望 vec_r 存储对 vec 的每个元素的引用,并且我想将值分配给 vec_r 以修改存储在 vec 中的值。我该怎么办?

0 投票
1 回答
1529 浏览

c++ - 参考包装向量,push_back 失败?

我有一个给我带来麻烦的问题;我的目标是创建一个八叉树。

实际上,它非常便宜(但对于我想用那个八叉树做的事情几乎足够了)。

我的问题是我std::vector<std::reference_wrapper<Point>>充满了相同的值。所以我的插入创建了一个无限循环。但这是代码,也许它会更容易理解。我在发生错误的地方添加了评论。

源码.cpp

八叉树.hpp

Node.hpp(出现问题的地方)

我真的不明白我做错了什么。

0 投票
1 回答
153 浏览

c++ - 对从引用到 std::reference_wrapper 或编译器错误的隐式转换理解不正确?

我对一些涉及引用和 std::reference_wrapper 的代码感到困惑,我完全不清楚这是否是我的错,因为我误解了引用包装器的工作原理,或者我是否遇到了编译器错误。

我有一个简单的映射,将对来自复杂类的对象的引用与一个值配对:

(为简单起见,我明确省略了地图编译所需的哈希和相等函子)

由于我不能直接使用地图中的引用,因此我使用了引用包装器:

现在,我的地图填充在一个函数中,例如:

但是该代码虽然可以编译,但不起作用。但是,这个按预期工作:

(请注意,在第二个版本中,我仍然没有明确构建 obj 的引用包装器)

所以,我的疑问是:

我对引用包装器的使用有误解吗?没有从引用到reference_wrapper 的隐式转换?如果不是,为什么代码首先编译?

或者这是 std::make_pair 中的一个已知问题/缺陷无法正确扣除传递给它的类型?

0 投票
1 回答
6343 浏览

c++ - ROS 订阅回调 - 使用 boost::bind 和成员函数

我正在尝试为所有主题使用相同的回调订阅 ROS 中的不同主题(每个弹出的车辆一个主题)。这个想法是boost::bind将主题名称作为附加参数传递,因此我知道我应该在回调中访问哪个车辆。

问题是,即使我已经就该主题提出了多个问题,但似乎没有一个解决方案有效。

基本上,我有以下VOBase包含std::map<std::string, VOAgent*> agents_一个成员函数的类,如下所示:

我通过此订阅致电:

但是,我得到了template argument deduction/substitution failed所有候选人和这个错误:

我已经测试了许多解决方案,例如使用std::ref(this)来获取 astd::reference_wrapper<_Tp>而不是 a VO::VOBase*(尽管该引用不存在:)use of deleted function,使用boost::bind而不是std::bind(但从 C++11 开始应该是一样的),使用并且在回调函数参数中没有...::ConstPtrfor ROS 消息(以及在subscribe<acl_msgs::ViconState::ConstPtr>等中。所以我只是在这里处理部分解决方案及其排列......

有什么线索吗?

0 投票
1 回答
760 浏览

c++ - 值类型为 reference_wrapper 时的 unordered_map 值分配

我正在试验std::reference_wrapper. 我不明白为什么以下内容适用于 astd::vector但不适用于 a std::unordered_map

这是我得到的编译错误

有人可以解释我做错了什么吗?

0 投票
2 回答
1096 浏览

c++ - 如何将一个向量的元素的引用复制到另一个向量?

我有一个vector

vector现在我想在另一个中保存指向 this 的所有元素的指针vector。但只是为了个人练习,我想以一种花哨的 C++ 风格来做这件事,所以std::vector<const island*> p_sea我不输入:

现在我想vector用引用填充这个新的:

我理解它的方式,来自 cppreference 文章,的第四个参数transform应该是一个函数,它从源范围内获取对元素的 const 引用并返回目标范围的元素;这正是std::cref<island>它的作用:它const island&作为参数并返回std::reference_wrapper<const island>。所以我相信这应该有效?

但是,它不会:

这会导致以下编译错误:

https://ideone.com/E80WXH

我究竟做错了什么?

...我回到邪恶的 C 指针。

0 投票
1 回答
1332 浏览

c++ - 错误:没有匹配函数调用 'std::reference_wrapper::reference_wrapper()

Book并且Article是来自 的派生类Medium

尝试在参考书目中插入Medium/ Book/时为什么会出现此错误?Article

编译器错误

主文件


参考书目.h


参考书目.cc

0 投票
1 回答
472 浏览

c++ - “解包”reference_wrapper 是什么意思?

我正在编写一个实用程序类来“解包” a std::reference_wrapper,但我对这意味着什么有点矛盾。

boost::unwrap_reference<T>::type被定义为U(where Tis std::reference_wrapper<U>),但这似乎违反直觉。如果 areference_wrapper旨在“包装”一个引用,那么我希望一个“未包装reference_wrapper一个引用

诚然,这个问题可能会导致意见或猜想,但有什么理由更喜欢U展开U&type(除了遵循 boost 模型)?是否有任何详细boost::unwrap_reference的技术报告可以为 boost 的模型提供基本原理?