[英]Implementation of std::reference_wrapper
同時在這里查看 std::reference_wrapper
的實現
構造函數和運算符對我來說很明顯,但我不理解這一部分
template< class... ArgTypes >
typename std::result_of<T&(ArgTypes&&...)>::type
operator() ( ArgTypes&&... args ) const {
return std::invoke(get(), std::forward<ArgTypes>(args)...);
}
有人可以為我簡化它...將不勝感激
編輯:並且很std::reference_wrapper
為std::reference_wrapper
operator()
提供有用的示例
這定義了operator()
成員函數,該函數適用於包含對Callable的引用的std::reference_wrapper
。 它的目的是調用底層的Callable。
class ... Args
是根據可傳遞給底層Callable的參數使其成為通用的。 typename std::result_of<T&(ArgTypes&&...)>::type
部分獲得 invoke
調用作為調用Callable的通用方法,無論Callable的類型是什么(Functor,函數指針,成員函數指針等),它都可以工作。 std::forward
來實現完美轉發 - 例如,傳入原始調用的lvalue和rvalues在底層調用中保留它們的l / rvalue-ness。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.