ATL使用が前提で,1次元のみ対応しています。
template
static HRESULT createVariantArray(T* value, int count, VARIANT*& retval)
{
SAFEARRAYBOUND sab = { count, 0 }; // 0 〜 count-1
CComSafeArraysarray(sab);
for(int n = 0; n < count; ++n) {
sarray.Add(*value++);
}
return CComVariant(sarray).Detach(retval);
}