The CAdapt class is provided by Microsoft in order to enable using classes that override the address of operator (operator&) in STL containers. MSDN has this to say about the use of CAdapt:
Typically, you will use
CAdaptwhen you want to storeCComBSTR,CComPtr,CComQIPtr, or_com_ptr_tobjects in an STL container such as alist.
On to my quesiton:
What is the full list of STL containers with which CAdapt should be used?
If the container contains a key/value pair (such as map) please specify whether CAdapt is needed for the key or the value.
None. Implementations should assume operator& is overloaded, and use the correct expression
&reinterpret_cast<char&>(obj)Now, there is another question that you didn’t ask:
Top of my head, I’d day
vector<T>(stores them as aT[]so reasonably needs arithmetic on them) and deque (stores them as multiple smallerT[]s so same rationale). list, map, set, multiset and multimap all work on nodes, so they themselves already wrap each object.