Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

函數 apply_visitor

boost::apply_visitor —

將給定的訪問者應用到給定的 variant 的內容上,該過程在編譯期進行類型安全檢查,以確認所有類型均被訪問者所處理。

摘要

template<typename Visitor, typename Variant> 
  typename Visitor::result_type
  apply_visitor(Visitor & visitor, Variant & operand);
template<typename Visitor, typename Variant>
  typename Visitor::result_type
  apply_visitor(const Visitor & visitor, Variant & operand);
template<typename BinaryVisitor, typename Variant1, typename Variant2>
  typename BinaryVisitor::result_type
  apply_visitor(BinaryVisitor & visitor, Variant1 & operand1,
                Variant2 & operand2);
template<typename BinaryVisitor, typename Variant1, typename Variant2>
  typename BinaryVisitor::result_type
  apply_visitor(const BinaryVisitor & visitor, Variant1 & operand1,
                Variant2 & operand2);
template<typename Visitor>
  apply_visitor_delayed_t<Visitor> apply_visitor(Visitor & visitor);

說明

apply_visitor 的行為取決於它所操作的參數的數量(即除訪問者以外的其它參數)。該函數的行為如下:

  • 接受一個操作數的重載將以給定的 variant 操作數的內容調用給定的訪問者的單參函數調用操作符。
  • 接受兩個操作數的重載將以給定的 variant 操作數的內容調用給定的訪問者的二元函數調用操作符。
  • 只接受一個訪問者的重載將返回一個 泛型函數對像,該對像接受一個或兩個參數並以這些參數和 visitor 調用 apply_visitor, 其行為和前面兩項相似。(這種行為特別有用,例如當你需要對一個 variant 對像序列中的各個元素使用一個標準庫算法時)。

返回: 接受操作數的重載將返回將給定訪問者應用於給定操作數所得的結果。只接受一個訪問者的重載則返回一個函數對象,以延後將訪問者應用於任意操作數。
要求: 給定的訪問者必須符合 StaticVisitor 概念的要求,並處理給定 variant 的各個有界類型。
拋出: 接受操作數的重載只會在給定的訪問者拋出異常時拋出。只接受一個訪問者的重載則不會拋出。(但是請注意,返回的 函數對像 有可能在運行時拋出)

PrevUpHomeNext