Boost.Range

可移植性

為了將這個庫移植到盡可能多的編譯器上,我們作出了巨大的努力。

為了全面支持內建數組,要求編譯器支持類模板偏特化。對於不符合標準的編譯器,也有機會用 type traits 庫來繞過。

Visual C++ 6/7.0 對於數組的支持有限:只要數組是內建類型的,它就可以工作。

還要注意,有些編譯器不能正確執行函數模板的排序。這種情況下,你必須依賴 range_result_iterator,並定義單個函數而不是分別針對 const 和 non-const 參數進行重載。所以如果你用的是舊的編譯器,就不能傳遞右值給函數了。

為了最大的可移植性,你應該遵從以下方針:

  1. 不要使用內建數組,
  2. 不要傳遞右值給 begin(), end() iterator_range 區間構造函數和賦值操作符,
  3. 使用 const_begin()const_end() 只要你的代碼意圖是只讀的;這可以解決大多數的右值問題,
  4. 不要依賴於 ADL:


© Copyright Thorsten Ottosen 2008.

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt)