Range MFC/ATL Extension
OverviewBoost.Range MFC/ATL Extension provides Boost.Range support for MFC/ATL collection and string types. CTypedPtrArray<CPtrArray, CList<CString> *> myArray; ... BOOST_FOREACH (CList<CString> *theList, myArray) { BOOST_FOREACH (CString& str, *theList) { boost::to_upper(str); std::sort(boost::begin(str), boost::end(str)); ... } } Requirements
MFC RangesIf the <boost/range/mfc.hpp> is included before or after Boost.Range headers, the MFC collections and strings become models of Range. The table below lists the Traversal Category and range_reference of MFC ranges.
Other Boost.Range metafunctions are defined by the following. Let Range be any type listed above and ReF be the same as range_reference<Range>::type. range_value<Range>::type is the same as remove_reference<remove_const<Ref>::type>::type, range_difference<Range>::type is the same as std::ptrdiff_t, and range_pointer<Range>::type is the same as add_pointer<remove_reference<Ref>::type>::type. As for const Range, see const Ranges. ATL RangesIf the <boost/range/atl.hpp> is included before or after Boost.Range headers, the ATL collections and strings become models of Range. The table below lists the Traversal Category and range_reference of ATL ranges.
Other Boost.Range metafunctions are defined by the following. Let Range be any type listed above and ReF be the same as range_reference<Range>::type. range_value<Range>::type is the same as remove_reference<Ref>::type, range_difference<Range>::type is the same as std::ptrdiff_t, and range_pointer<Range>::type is the same as add_pointer<remove_reference<Ref>::type>::type. As for const Range, see const Ranges. const Rangesrange_reference<const Range>::type is defined by the following algorithm. Let Range be any type listed above and ReF be the same as range_reference<Range>::type. if (Range is CObArray || Range is CObList) return CObject const * & else if (Range is CPtrArray || Range is CPtrList) return void const * & else if (there is a type X such that X& is the same as ReF) return X const & else if (there is a type X such that X* const is the same as ReF) return X const * const else return ReF Other Boost.Range metafunctions are defined by the following. range_value<const Range>::type is the same as range_value<Range>::type, range_difference<const Range>::type is the same as std::ptrdiff_t, and range_pointer<const Range>::type is the same as add_pointer<remove_reference<range_reference<const Range>::type>::type>::type. |