![]() |
Home | Libraries | People | FAQ | More |
Copyright 1999, 2000 Jaakko Jrvi
Copyright 2001, 2002 Peter Dimov
Copyright 2002 David 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
Ref 庫是一個小型庫,對於把引用傳遞給函數模板(算法)非常有用,這些函數模板(算法)通常都接收它們的參數的拷貝。它定義了類模板 boost::reference_wrapper<T>,兩個返回 boost::reference_wrapper<T> 實例的函數 boost::ref 和 boost::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 |