-1
template< class... ArgTypes >
typename std::result_of<T&(ArgTypes&&...)>::type
operator() (ArgTypes&&... args) const {
return std::invoke(get(), std::forward<ArgTypes>(args)...);
}
왜 우리는 어쨌든 연산자()를 필요합니까? 어떻게 작동합니까?
반환 콘텐츠 "result_of :: type"은 무엇입니까?
무엇 (ArgTypes & & ..) ??
invoke (get) ???
이 코드는 다른 행성 :
private:
T* _ptr;
};
와우, 그래서 reference_wrapper는 함수를 캡슐화 할 수있을뿐만 아니라 템플릿 매직은 템플릿 매개 변수 전달을 사용하여 함수 호출을 표현할 수 있습니까? 그 놀라운! 어떻게 알았어? std :: result_of, std :: invoke 등에 대해 배울 수 있습니다. 나는. 나는 아마도 함수를 감싸는 것이 허용되는지, 또는이 사용자 정의 템플릿을 사용하여 반환 유형을 표현할 수 있는지 추측 할 수 있습니다. 큰 체계적인 매뉴얼이 있습니까? 아니면 그 "신성한 지식"? – barney
@barney ['std :: result_of'] (http://en.cppreference.com/w/cpp/types/result_of), ['std :: invoke'] (http://en.cppreference.com/ cpp/유틸리티/기능/호출). 이 사이트에는 표준 클래스에 대한 설명이있을뿐만 아니라 구현 가능한 섹션 *이 있습니다. 구현 섹션에서 구현 방법을 볼 수 있으며 그로부터 많은 것을 배울 수 있습니다. – Zereges