Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Chapter 15. Boost.Ref

Jaakko Jrvi

Peter Dimov

Douglas Gregor

Dave Abrahams

Subject to the Boost Software License, Version 1.0. See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.

Table of Contents

Introduction 簡介
Reference 參考
Header <boost/ref.hpp>
Acknowledgements 感謝

Introduction 簡介

Ref 庫是一個小型庫,對於把引用傳遞給函數模板(算法)非常有用,這些函數模板(算法)通常都接收它們的參數的拷貝。它定義了類模板 boost::reference_wrapper<T>,兩個返回 boost::reference_wrapper<T> 實例的函數 boost::refboost::cref,以及兩個 traits classes(特徵類)boost::is_reference_wrapper<T>boost::unwrap_reference<T>

boost::reference_wrapper<T> 的目的是容納一個引向類型為 T 的對象的引用。它主要用於把引用「喂」給那些以傳值方式持有它們的參數的函數模板(算法)。

為了支持這個用法,boost::reference_wrapper<T> 提供一個到 T& 的隱式轉換。這通常允許函數模板可以不加改變地工作在引用上。

boost::reference_wrapper<T> 是 CopyConstructible(可拷貝構造)的,也是 Assignable(可賦值)的(普通引用不是 Assignable(可賦值)的)。

表達式 boost::ref(x) 返回一個 boost::reference_wrapper<X>(x),X 是 x 的類型。類似地,boost::cref(x) 返回一個 boost::reference_wrapper<X const>(x)

如果 T 是一個 reference_wrapper,則表達式 boost::is_reference_wrapper<T>::value 的值為 true,否則為 false。

如果 T 是一個 reference_wrapper,則類型表達式 boost::unwrap_reference<T>::type 的值為 T::type,否則為 T。

Last revised: November 10, 2006 at 13:27:05 -0500


PrevUpHomeNext