c++ - 像这样重新安装一对引用文献合法吗?

标签 c++ reference

我想重新设置一对引用refPair

int a, b, c, d;
pair<int&, int&> refPair(a, b);

这样做似乎会导致 c 和 d 的值被复制到 a 和 b,这是我不想要的

refPair = pair<int&, int&>(c, d);

但是这样做不会

new(&refPair) pair<int&, int&>(c, d);

我想知道这是否合法并且不会导致任何未定义的行为。它适用于我的编译器,但我不确定它是否可移植。

最佳答案

我相当确定这是未定义的行为,因为构造像这样的非平凡类是非法的(std::pair 可以是非平凡的 AFAIK)。

无论如何,请查看可重新安装的 std::reference_wrapper

refPair = pair<std::reference_wrapper<int>, std::reference_wrapper<int> >(std::ref(c), std::ref(d));

关于c++ - 像这样重新安装一对引用文献合法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14549377/

相关文章:

C++ fwrite 破坏二进制文件

c++ - 从 const 函数返回非常量属性引用

c# - 手动添加对 Entity Framework 的引用

c++ - glutBitmapCharacter 位置文本错误

c++ - 打印雷电般的图案

c++ - 旋转二维多边形算法

c++ - 使用哪个C++数据库或ORM API?

c++ - 引用函数指针

c - 我要求澄清有关 C 中的 '' 未通过引用传递''

c# - "this"作为参数是引用吗?