Nice programing

std :: transform 및 유사하게 'for'루프 증분을 (void)로 캐스팅하는 이유는 무엇입니까?

nicepro 2020. 10. 19. 12:44
반응형

std :: transform 및 유사하게 'for'루프 증분을 (void)로 캐스팅하는 이유는 무엇입니까?


(void) ++__result아래 코드 의 목적은 무엇입니까 ?

std :: transform 구현 :

// std::transform
template <class _InputIterator, class _OutputIterator, class _UnaryOperation>
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
transform(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _UnaryOperation __op)
{
    for (; __first != __last; ++__first, (void) ++__result)
        *__result = __op(*__first);
    return __result;
}

과부하가 발생할 수 있습니다 operator,. void오버로드 된 연산자는 void매개 변수를 사용할 수 없으므로 오버로드 된 연산자가 호출되지 않도록 피연산자를 캐스팅합니다 .


과부하가있는 operator,경우 호출을 방지 합니다. 유형 void은 함수 (연산자)의 인수가 될 수 없기 때문입니다.

또 다른 접근 방식은 void()중간에 삽입하는 것입니다 .

++__first, void(), ++__result

참고 URL : https://stackoverflow.com/questions/38357089/why-does-stdtransform-and-similar-cast-the-for-loop-increment-to-void

반응형