Вы также можете использовать типы VARIANT, что дает вам кучу опций в зависимости от типа передаваемых данных. В вашем случае это будут VARIANT типа VT_BSTR & VT_DATE.
Это лично для меня хорошо работало, потому что я мог затем передавать SAFEARRAY, которые я мог использовать для передачи типов STL, таких как std :: map.
Marshaling OLE Типы данных:
Примечание по поводу вышеуказанного сайта MSDN: при добавлении типов VARIANT в вашу IDL, указанная выше ссылка указывает на импорт "objidl.idl". Это все равно дало мне ошибку компиляции, и вместо этого импорт "oaidl.idl" работал для меня.