I am developing a COM wrapper for Windows APIs, which can be used from scripting languages those don't have native Windows API support. So I am thinking about what should I use in COM ATL projects.
The interfaces and coclasses MUST use
VARIANT. You can't have a COM interface or object that uses a
CComVariant in any of their COM-public method signatures or properties. You can use
CComVariant inside the coclass implementations, however.