簡體   English   中英

執行std :: reference_wrapper

[英]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_wrapperstd::reference_wrapper operator()提供有用的示例

這定義了operator()成員函數,該函數適用於包含對Callable的引用的std::reference_wrapper 它的目的是調用底層的Callable。

  • 模板參數class ... Args是根據可傳遞給底層Callable的參數使其成為通用的。
  • 運算符的返回類型必須是通過調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM