问题标签 [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 投票
5 回答
154 浏览

c++ - reference_wrapper 引用原语

我的印象是我可以使用 reference_wrapper 生成一个函子,该函子将返回传递给 reference_wrapper ctor 的对象。但这行不通。我做错了吗?如果是这样,有没有更好的方法来实现这一点?我可以写一个 lambda,似乎我不应该这样做。

0 投票
4 回答
4246 浏览

c++ - 为什么 std::reference_wrapper暂时不接受?

通常,右值可以绑定到 const 引用 ( const SomeType&)。它内置在语言中。但是,std::reference_wrapper<const T>不接受右值作为其构造函数参数,因为相应的重载被故意删除。这种不一致的原因是什么?std::reference_wrapper在我们必须按值传递但希望保留引用语义的情况下,被“宣传”为引用变量的替代方案。

换句话说,如果const &绑定的右值被认为是安全的,因为它是语言内置的,为什么 C++11 的设计者不允许右值被包装在 中std::reference_wrapper<const T>

这什么时候会派上用场,你可能会问。例如:

0 投票
2 回答
437 浏览

c++ - 未初始化reference_wrapper的返回值

当我下面的向量reference_wrapper指向哪里?resize()这是未定义的行为吗?为了安全我应该怎么做?

0 投票
2 回答
1756 浏览

c++ - 比较reference_wrappers的地址

我如何std::reference_wrapper通过它们持有的引用来比较两个 s?我想看看两个std::reference_wrappers 的引用是否相等。

编辑:抱歉混淆。我的意思是如何获取所指对象的地址并进行比较。

0 投票
1 回答
210 浏览

c++ - reference_wrapper does not change addresses accordingly

This question is an extension of this question. I understand that due to push_back() new memory allocation takes place and the address of the first element of std::vector v changes but should not std::vector v2 change its address accordingly?

Output:

0 投票
2 回答
815 浏览

c++ - const 正确性与 reference_wrapper

在各种情况下,我有一个需要由许多函数处理的对象集合(例如向量)。有些函数需要修改对象,而有些则不需要。对象的类可以从抽象基类继承。因此,我有这样的事情:

显然(?)我不能将std::reference_wrapper<A>s 的相同向量同时传递给process_1process_2。到目前为止我考虑过的解决方案包括:

  • 使用 C 风格的强制转换或reinterpret_castvec
  • 编写我自己的引用包装器,它有T& get()T const & get() const而不是T& get() const
  • 使用例如采用包装器而不是向量的方法进行重构
  • 有和没有向量的副本const
  • 不使用constinreference_wrapper的论点

这些看起来都不是很优雅。还有什么我可以做的吗?

0 投票
2 回答
1286 浏览

c++ - Reference_wrapper:Push_back 有效但未分配

在下面的代码中,push_back()a std::refinto astd::vector<reference_wrapper<Type>>效果很好,但是将 a 分配std::ref给 areference_wrapper<Type>不起作用。为什么?

0 投票
2 回答
595 浏览

c++ - 将指向reference_wrapper的指针转换为指向底层的指针?

这是我的情况:

我得到数据作为指针说double*

我想将其包装在 avector中以使用库,并避免弄乱指针。

不想复制整个数组,我使用引用包装向量。如果我想在使用库double*后从所说的得到返回,我可以通过转换函数来得到这个吗?vectorvector.data()

例如:

0 投票
1 回答
6005 浏览

c++ - 常量reference_wrapper

在下面的代码中,目的是有一个reference_wrapper<int> b这样的,即当a改变时,b也改变然而,相反的不应该被允许,即不a应该在改变时b改变。我尝试了两种方法:第 7 行和第 8 行。第 7 行导致编译器抱怨它无法转换为intconst int而第 8 行编译没有问题,但结果不是我想要的(a更改时b更改)。任何想法?

0 投票
2 回答
74 浏览

c++ - 重新分配后更改地址

在下面的代码中,每当将新成员插入 时std::vector<int>A,由于内存重新分配,都会std::vector<reference_wrapper<int>>B指向错误的地址。是否可以使引用向量跟踪重新分配并始终存储正确的地址?