在执行 std::ranges::transform
在 GCC 的 stdlibc++ 中,为什么 for
循环迭代器增量有 (void)
throw ?
for (; __first1 != __last1 && __first2 != __last2;
++__first1, (void)++__first2, ++__result)
最佳答案
这是因为在 C++ 中它是 possible to overload the comma operator .直到今天,我仍然不知道这样做的好处,但现在这并不重要。重要的一点是它是可能的。
显式 void
cast 可以防止意外调用重载运算符带来的意外副作用,以及不需要的结果。请注意如何单个 void
cast 有效地防止了左侧和右侧的逗号运算符被调用。
关于c++ - GCC 标准库实现中(void)强制转换的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67904143/