/
usr
/
include
/
boost
/
range
/
/usr/include/boost/range
mkdir
upload
Name
Size
Mode
Actions
adaptor/
-
0755
rm
algorithm/
-
0755
rm
algorithm_ext/
-
0755
rm
detail/
-
0755
rm
adaptors.hpp
1096
0644
edit
dl
rm
algorithm.hpp
3910
0644
edit
dl
rm
algorithm_ext.hpp
1075
0644
edit
dl
rm
any_range.hpp
6584
0644
edit
dl
rm
as_array.hpp
951
0644
edit
dl
rm
as_literal.hpp
3837
0644
edit
dl
rm
atl.hpp
16840
0644
edit
dl
rm
begin.hpp
3555
0644
edit
dl
rm
category.hpp
698
0644
edit
dl
rm
combine.hpp
1156
0644
edit
dl
rm
concepts.hpp
13632
0644
edit
dl
rm
config.hpp
1316
0644
edit
dl
rm
const_iterator.hpp
1924
0644
edit
dl
rm
const_reverse_iterator.hpp
1001
0644
edit
dl
rm
counting_range.hpp
2216
0644
edit
dl
rm
difference_type.hpp
1224
0644
edit
dl
rm
distance.hpp
988
0644
edit
dl
rm
empty.hpp
710
0644
edit
dl
rm
end.hpp
3615
0644
edit
dl
rm
functions.hpp
680
0644
edit
dl
rm
has_range_iterator.hpp
2375
0644
edit
dl
rm
irange.hpp
8020
0644
edit
dl
rm
istream_range.hpp
1097
0644
edit
dl
rm
iterator.hpp
1978
0644
edit
dl
rm
iterator_range.hpp
530
0644
edit
dl
rm
iterator_range_core.hpp
27439
0644
edit
dl
rm
iterator_range_hash.hpp
570
0644
edit
dl
rm
iterator_range_io.hpp
2656
0644
edit
dl
rm
join.hpp
2825
0644
edit
dl
rm
metafunctions.hpp
808
0644
edit
dl
rm
mfc.hpp
24340
0644
edit
dl
rm
mfc_map.hpp
3866
0644
edit
dl
rm
mutable_iterator.hpp
2031
0644
edit
dl
rm
numeric.hpp
6068
0644
edit
dl
rm
pointer.hpp
730
0644
edit
dl
rm
range_fwd.hpp
1366
0644
edit
dl
rm
rbegin.hpp
1188
0644
edit
dl
rm
reference.hpp
712
0644
edit
dl
rm
rend.hpp
1189
0644
edit
dl
rm
result_iterator.hpp
811
0644
edit
dl
rm
reverse_iterator.hpp
1095
0644
edit
dl
rm
reverse_result_iterator.hpp
865
0644
edit
dl
rm
size.hpp
2194
0644
edit
dl
rm
size_type.hpp
2298
0644
edit
dl
rm
sub_range.hpp
7755
0644
edit
dl
rm
traversal.hpp
731
0644
edit
dl
rm
value_type.hpp
697
0644
edit
dl
rm
Edit:
/usr/include/boost/range/mfc.hpp
(24340B)
#ifndef BOOST_RANGE_MFC_HPP #define BOOST_RANGE_MFC_HPP // Boost.Range MFC Extension // // Copyright Shunsuke Sogame 2005-2006. // Distributed under 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) // config // #include <afx.h> // _MFC_VER #if !defined(BOOST_RANGE_MFC_NO_CPAIR) #if (_MFC_VER < 0x0700) // dubious #define BOOST_RANGE_MFC_NO_CPAIR #endif #endif #if !defined(BOOST_RANGE_MFC_HAS_LEGACY_STRING) #if (_MFC_VER < 0x0700) // dubious #define BOOST_RANGE_MFC_HAS_LEGACY_STRING #endif #endif // A const collection of old MFC doesn't return const reference. // #if !defined(BOOST_RANGE_MFC_CONST_COL_RETURNS_NON_REF) #if (_MFC_VER < 0x0700) // dubious #define BOOST_RANGE_MFC_CONST_COL_RETURNS_NON_REF #endif #endif // forward declarations // template< class Type, class ArgType > class CArray; template< class Type, class ArgType > class CList; template< class Key, class ArgKey, class Mapped, class ArgMapped > class CMap; template< class BaseClass, class PtrType > class CTypedPtrArray; template< class BaseClass, class PtrType > class CTypedPtrList; template< class BaseClass, class KeyPtrType, class MappedPtrType > class CTypedPtrMap; // extended customizations // #include <cstddef> // ptrdiff_t #include <utility> // pair #include <boost/assert.hpp> #include <boost/mpl/if.hpp> #include <boost/range/atl.hpp> #include <boost/range/begin.hpp> #include <boost/range/const_iterator.hpp> #include <boost/range/detail/microsoft.hpp> #include <boost/range/end.hpp> #include <boost/iterator/iterator_adaptor.hpp> #include <boost/iterator/iterator_categories.hpp> #include <boost/iterator/iterator_facade.hpp> #include <boost/iterator/transform_iterator.hpp> #include <boost/type_traits/is_const.hpp> #include <boost/type_traits/remove_pointer.hpp> #include <boost/utility/addressof.hpp> #include <afx.h> // legacy CString #include <afxcoll.h> // CXXXArray, CXXXList, CMapXXXToXXX #include <tchar.h> namespace boost { namespace range_detail_microsoft { // mfc_ptr_array_iterator // // 'void **' is not convertible to 'void const **', // so we define... // template< class ArrayT, class PtrType > struct mfc_ptr_array_iterator; template< class ArrayT, class PtrType > struct mfc_ptr_array_iterator_super { typedef iterator_adaptor< mfc_ptr_array_iterator<ArrayT, PtrType>, std::ptrdiff_t, // Base! PtrType, // Value random_access_traversal_tag, use_default, std::ptrdiff_t // Difference > type; }; template< class ArrayT, class PtrType > struct mfc_ptr_array_iterator : mfc_ptr_array_iterator_super<ArrayT, PtrType>::type { private: typedef mfc_ptr_array_iterator self_t; typedef typename mfc_ptr_array_iterator_super<ArrayT, PtrType>::type super_t; typedef typename super_t::reference ref_t; public: explicit mfc_ptr_array_iterator() { } explicit mfc_ptr_array_iterator(ArrayT& arr, INT_PTR index) : super_t(index), m_parr(boost::addressof(arr)) { } template< class, class > friend struct mfc_ptr_array_iterator; template< class ArrayT_, class PtrType_ > mfc_ptr_array_iterator(mfc_ptr_array_iterator<ArrayT_, PtrType_> const& other) : super_t(other.base()), m_parr(other.m_parr) { } private: ArrayT *m_parr; friend class iterator_core_access; ref_t dereference() const { BOOST_ASSERT(0 <= this->base() && this->base() < m_parr->GetSize() && "out of range"); return *( m_parr->GetData() + this->base() ); } bool equal(self_t const& other) const { BOOST_ASSERT(m_parr == other.m_parr && "iterators incompatible"); return this->base() == other.base(); } }; struct mfc_ptr_array_functions { template< class Iterator, class X > Iterator begin(X& x) { return Iterator(x, 0); } template< class Iterator, class X > Iterator end(X& x) { return Iterator(x, x.GetSize()); } }; // arrays // template< > struct customization< ::CByteArray > : array_functions { template< class X > struct meta { typedef BYTE val_t; typedef val_t *mutable_iterator; typedef val_t const *const_iterator; }; }; template< > struct customization< ::CDWordArray > : array_functions { template< class X > struct meta { typedef DWORD val_t; typedef val_t *mutable_iterator; typedef val_t const *const_iterator; }; }; template< > struct customization< ::CObArray > : mfc_ptr_array_functions { template< class X > struct meta { typedef mfc_ptr_array_iterator<X, CObject *> mutable_iterator; typedef mfc_ptr_array_iterator<X const, CObject const *> const_iterator; }; }; template< > struct customization< ::CPtrArray > : mfc_ptr_array_functions { template< class X > struct meta { typedef mfc_ptr_array_iterator<X, void *> mutable_iterator; typedef mfc_ptr_array_iterator<X const, void const *> const_iterator; }; }; template< > struct customization< ::CStringArray > : array_functions { template< class X > struct meta { typedef ::CString val_t; typedef val_t *mutable_iterator; typedef val_t const *const_iterator; }; }; template< > struct customization< ::CUIntArray > : array_functions { template< class X > struct meta { typedef UINT val_t; typedef val_t *mutable_iterator; typedef val_t const *const_iterator; }; }; template< > struct customization< ::CWordArray > : array_functions { template< class X > struct meta { typedef WORD val_t; typedef val_t *mutable_iterator; typedef val_t const *const_iterator; }; }; // lists // template< > struct customization< ::CObList > : list_functions { template< class X > struct meta { typedef list_iterator<X, ::CObject *> mutable_iterator; #if !defined(BOOST_RANGE_MFC_CONST_COL_RETURNS_NON_REF) typedef list_iterator<X const, ::CObject const *> const_iterator; #else typedef list_iterator<X const, ::CObject const * const, ::CObject const * const> const_iterator; #endif }; }; template< > struct customization< ::CPtrList > : list_functions { template< class X > struct meta { typedef list_iterator<X, void *> mutable_iterator; #if !defined(BOOST_RANGE_MFC_CONST_COL_RETURNS_NON_REF) typedef list_iterator<X const, void const *> const_iterator; #else typedef list_iterator<X const, void const * const, void const * const> const_iterator; #endif }; }; template< > struct customization< ::CStringList > : list_functions { template< class X > struct meta { typedef ::CString val_t; typedef list_iterator<X, val_t> mutable_iterator; #if !defined(BOOST_RANGE_MFC_CONST_COL_RETURNS_NON_REF) typedef list_iterator<X const, val_t const> const_iterator; #else typedef list_iterator<X const, val_t const, val_t const> const_iterator; #endif }; }; // mfc_map_iterator // template< class MapT, class KeyT, class MappedT > struct mfc_map_iterator; template< class MapT, class KeyT, class MappedT > struct mfc_map_iterator_super { typedef iterator_facade< mfc_map_iterator<MapT, KeyT, MappedT>, std::pair<KeyT, MappedT>, forward_traversal_tag, std::pair<KeyT, MappedT> const > type; }; template< class MapT, class KeyT, class MappedT > struct mfc_map_iterator : mfc_map_iterator_super<MapT, KeyT, MappedT>::type { private: typedef mfc_map_iterator self_t; typedef typename mfc_map_iterator_super<MapT, KeyT, MappedT>::type super_t; typedef typename super_t::reference ref_t; public: explicit mfc_map_iterator() { } explicit mfc_map_iterator(MapT const& map, POSITION pos) : m_pmap(boost::addressof(map)), m_posNext(pos) { increment(); } explicit mfc_map_iterator(MapT const& map) : m_pmap(&map), m_pos(0) // end iterator { } template< class, class, class > friend struct mfc_map_iterator; template< class MapT_, class KeyT_, class MappedT_> mfc_map_iterator(mfc_map_iterator<MapT_, KeyT_, MappedT_> const& other) : m_pmap(other.m_pmap), m_pos(other.m_pos), m_posNext(other.m_posNext), m_key(other.m_key), m_mapped(other.m_mapped) { } private: MapT const *m_pmap; POSITION m_pos, m_posNext; KeyT m_key; MappedT m_mapped; friend class iterator_core_access; ref_t dereference() const { BOOST_ASSERT(m_pos != 0 && "out of range"); return std::make_pair(m_key, m_mapped); } void increment() { BOOST_ASSERT(m_pos != 0 && "out of range"); if (m_posNext == 0) { m_pos = 0; return; } m_pos = m_posNext; m_pmap->GetNextAssoc(m_posNext, m_key, m_mapped); } bool equal(self_t const& other) const { BOOST_ASSERT(m_pmap == other.m_pmap && "iterators incompatible"); return m_pos == other.m_pos; } }; struct mfc_map_functions { template< class Iterator, class X > Iterator begin(X& x) { return Iterator(x, x.GetStartPosition()); } template< class Iterator, class X > Iterator end(X& x) { return Iterator(x); } }; #if !defined(BOOST_RANGE_MFC_NO_CPAIR) // mfc_cpair_map_iterator // // used by ::CMap and ::CMapStringToString // template< class MapT, class PairT > struct mfc_cpair_map_iterator; template< class MapT, class PairT > struct mfc_pget_map_iterator_super { typedef iterator_facade< mfc_cpair_map_iterator<MapT, PairT>, PairT, forward_traversal_tag > type; }; template< class MapT, class PairT > struct mfc_cpair_map_iterator : mfc_pget_map_iterator_super<MapT, PairT>::type { private: typedef mfc_cpair_map_iterator self_t; typedef typename mfc_pget_map_iterator_super<MapT, PairT>::type super_t; typedef typename super_t::reference ref_t; public: explicit mfc_cpair_map_iterator() { } explicit mfc_cpair_map_iterator(MapT& map, PairT *pp) : m_pmap(boost::addressof(map)), m_pp(pp) { } template< class, class > friend struct mfc_cpair_map_iterator; template< class MapT_, class PairT_> mfc_cpair_map_iterator(mfc_cpair_map_iterator<MapT_, PairT_> const& other) : m_pmap(other.m_pmap), m_pp(other.m_pp) { } private: MapT *m_pmap; PairT *m_pp; friend class iterator_core_access; ref_t dereference() const { BOOST_ASSERT(m_pp != 0 && "out of range"); return *m_pp; } void increment() { BOOST_ASSERT(m_pp != 0 && "out of range"); m_pp = m_pmap->PGetNextAssoc(m_pp); } bool equal(self_t const& other) const { BOOST_ASSERT(m_pmap == other.m_pmap && "iterators incompatible"); return m_pp == other.m_pp; } }; struct mfc_cpair_map_functions { template< class Iterator, class X > Iterator begin(X& x) { // Workaround: // Assertion fails if empty. // MFC document is wrong. #if !defined(NDEBUG) if (x.GetCount() == 0) return Iterator(x, 0); #endif return Iterator(x, x.PGetFirstAssoc()); } template< class Iterator, class X > Iterator end(X& x) { return Iterator(x, 0); } }; #endif // !defined(BOOST_RANGE_MFC_NO_CPAIR) // maps // template< > struct customization< ::CMapPtrToWord > : mfc_map_functions { template< class X > struct meta { typedef void *key_t; typedef WORD mapped_t; typedef mfc_map_iterator<X, key_t, mapped_t> mutable_iterator; typedef mutable_iterator const_iterator; }; }; template< > struct customization< ::CMapPtrToPtr > : mfc_map_functions { template< class X > struct meta { typedef void *key_t; typedef void *mapped_t; typedef mfc_map_iterator<X, key_t, mapped_t> mutable_iterator; typedef mutable_iterator const_iterator; }; }; template< > struct customization< ::CMapStringToOb > : mfc_map_functions { template< class X > struct meta { typedef ::CString key_t; typedef ::CObject *mapped_t; typedef mfc_map_iterator<X, key_t, mapped_t> mutable_iterator; typedef mutable_iterator const_iterator; }; }; template< > struct customization< ::CMapStringToPtr > : mfc_map_functions { template< class X > struct meta { typedef ::CString key_t; typedef void *mapped_t; typedef mfc_map_iterator<X, key_t, mapped_t> mutable_iterator; typedef mutable_iterator const_iterator; }; }; template< > struct customization< ::CMapStringToString > : #if !defined(BOOST_RANGE_MFC_NO_CPAIR) mfc_cpair_map_functions #else mfc_map_functions #endif { template< class X > struct meta { #if !defined(BOOST_RANGE_MFC_NO_CPAIR) typedef typename X::CPair pair_t; typedef mfc_cpair_map_iterator<X, pair_t> mutable_iterator; typedef mfc_cpair_map_iterator<X const, pair_t const> const_iterator; #else typedef ::CString key_t; typedef ::CString mapped_t; typedef mfc_map_iterator<X, key_t, mapped_t> mutable_iterator; typedef mutable_iterator const_iterator; #endif }; }; template< > struct customization< ::CMapWordToOb > : mfc_map_functions { template< class X > struct meta { typedef WORD key_t; typedef ::CObject *mapped_t; typedef mfc_map_iterator<X, key_t, mapped_t> mutable_iterator; typedef mutable_iterator const_iterator; }; }; template< > struct customization< ::CMapWordToPtr > : mfc_map_functions { template< class X > struct meta { typedef WORD key_t; typedef void *mapped_t; typedef mfc_map_iterator<X, key_t, mapped_t> mutable_iterator; typedef mutable_iterator const_iterator; }; }; // templates // template< class Type, class ArgType > struct customization< ::CArray<Type, ArgType> > : array_functions { template< class X > struct meta { typedef Type val_t; typedef val_t *mutable_iterator; typedef val_t const *const_iterator; }; }; template< class Type, class ArgType > struct customization< ::CList<Type, ArgType> > : list_functions { template< class X > struct meta { typedef Type val_t; typedef list_iterator<X, val_t> mutable_iterator; #if !defined(BOOST_RANGE_MFC_CONST_COL_RETURNS_NON_REF) typedef list_iterator<X const, val_t const> const_iterator; #else typedef list_iterator<X const, val_t const, val_t const> const_iterator; #endif }; }; template< class Key, class ArgKey, class Mapped, class ArgMapped > struct customization< ::CMap<Key, ArgKey, Mapped, ArgMapped> > : #if !defined(BOOST_RANGE_MFC_NO_CPAIR) mfc_cpair_map_functions #else mfc_map_functions #endif { template< class X > struct meta { #if !defined(BOOST_RANGE_MFC_NO_CPAIR) typedef typename X::CPair pair_t; typedef mfc_cpair_map_iterator<X, pair_t> mutable_iterator; typedef mfc_cpair_map_iterator<X const, pair_t const> const_iterator; #else typedef Key key_t; typedef Mapped mapped_t; typedef mfc_map_iterator<X, key_t, mapped_t> mutable_iterator; typedef mutable_iterator const_iterator; #endif }; }; template< class BaseClass, class PtrType > struct customization< ::CTypedPtrArray<BaseClass, PtrType> > { template< class X > struct fun { typedef typename remove_pointer<PtrType>::type val_t; typedef typename mpl::if_< is_const<X>, val_t const, val_t >::type val_t_; typedef val_t_ * const result_type; template< class PtrType_ > result_type operator()(PtrType_ p) const { return static_cast<result_type>(p); } }; template< class X > struct meta { typedef typename compatible_mutable_iterator<BaseClass>::type miter_t; typedef typename range_const_iterator<BaseClass>::type citer_t; typedef transform_iterator<fun<X>, miter_t> mutable_iterator; typedef transform_iterator<fun<X const>, citer_t> const_iterator; }; template< class Iterator, class X > Iterator begin(X& x) { return Iterator(boost::begin<BaseClass>(x), fun<X>()); } template< class Iterator, class X > Iterator end(X& x) { return Iterator(boost::end<BaseClass>(x), fun<X>()); } }; template< class BaseClass, class PtrType > struct customization< ::CTypedPtrList<BaseClass, PtrType> > : list_functions { template< class X > struct meta { typedef typename remove_pointer<PtrType>::type val_t; // not l-value typedef list_iterator<X, val_t * const, val_t * const> mutable_iterator; typedef list_iterator<X const, val_t const * const, val_t const * const> const_iterator; }; }; template< class BaseClass, class KeyPtrType, class MappedPtrType > struct customization< ::CTypedPtrMap<BaseClass, KeyPtrType, MappedPtrType> > : mfc_map_functions { template< class X > struct meta { typedef mfc_map_iterator<X, KeyPtrType, MappedPtrType> mutable_iterator; typedef mutable_iterator const_iterator; }; }; // strings // #if defined(BOOST_RANGE_MFC_HAS_LEGACY_STRING) template< > struct customization< ::CString > { template< class X > struct meta { // LPTSTR/LPCTSTR is not always defined in <tchar.h>. typedef TCHAR *mutable_iterator; typedef TCHAR const *const_iterator; }; template< class Iterator, class X > typename mutable_<Iterator, X>::type begin(X& x) { return x.GetBuffer(0); } template< class Iterator, class X > Iterator begin(X const& x) { return x; } template< class Iterator, class X > Iterator end(X& x) { return begin<Iterator>(x) + x.GetLength(); } }; #endif // defined(BOOST_RANGE_MFC_HAS_LEGACY_STRING) } } // namespace boost::range_detail_microsoft // range customizations // // arrays // BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CByteArray ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CDWordArray ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CStringArray ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CUIntArray ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CWordArray ) // lists // BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CObList ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CPtrList ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CStringList ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CObArray ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CPtrArray ) // maps // BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CMapPtrToWord ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CMapPtrToPtr ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CMapStringToOb ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CMapStringToPtr ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CMapStringToString ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CMapWordToOb ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CMapWordToPtr ) // templates // BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CArray, 2 ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CList, 2 ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CMap, 4 ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CTypedPtrArray, 2 ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CTypedPtrList, 2 ) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CTypedPtrMap, 3 ) // strings // #if defined(BOOST_RANGE_MFC_HAS_LEGACY_STRING) BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE( boost::range_detail_microsoft::using_type_as_tag, BOOST_PP_NIL, CString ) #endif #endif
Save
cmd:
run