我有一个按值接受参数的函数,但是由于某种原因,在调用此函数后,按值传递的参数与调用之前的值不同。我没有一个可重现的小示例,可以在这里发布,所以我的问题很笼统:是否存在一种情况,即按值将对象传递给函数会导致该对象发生突变?
如果我通过const ref传递此数据类型,则不会发生突变。这与具有数组成员的联合有关吗?我怀疑是复制构造函数与std :: arrays的交互,或者在此过程中某处调用了某些移动构造函数。
union uint128_union
{
uint128_union (uint128_union const &) = default;
std::array<uint8_t, 16> bytes;
std::array<char, 16> chars;
std::array<uint32_t, 4> dwords;
std::array<uint64_t, 2> qwords;
};
//function that is mutating the value. Before I call this function,
//amount is non-zero. After, amount is zero
void func(uint128_union amount);
具体来说,该突变似乎将传入的值设置为0。