Question: I am trying to add pictures in a mail body by adding them to the attachments of the mail item and then adding the sources with the right content id in the html of the mail body. 

This is working fine except with Outlook for Mac. In Outlook for Windows and also in the browsers (even safari) the pictures are inserted correctly. 

In Outlook for Mac I get blank squares with an error that the file might be moved or removed. When I send the email, the pictures are inserted correctly and the receiver gets a mail with pictures (also looks correct in Sent Items).

This issue only surfaces when composing an email on Outlook for Mac. I am using following code:

```
Office.context.mailbox.item.addFileAttachmentAsync(uri,
            assetName,
            { },
            function (asyncResult) {
                if (asyncResult.status == "failed") {
                    console.log("Attach action failed with error: " + asyncResult.error.message);
                    deferred.reject();
                }
                else {
                    console.log("Attach action successfull");
                    deferred.resolve();
                }
            });

```

Answer: 
No. You must know the size of the type that has been erased by `void*`. If you cannot recover the type (`int`), or rather the number of bytes that type occupies (`sizeof(int)`) then you cannot reliably operate on the underlying memory.
Yes, you need to know and preserve the size of stored type. More importantly, stored type must be [trivial](http://en.cppreference.com/w/cpp/concept/TrivialType), at least [trivially copyable](http://en.cppreference.com/w/cpp/concept/TriviallyCopyable). Otherwise stored objects may be very much surprised finding themselves moving across the memory. If you need to support such non-trivial types, you must use their real copy or move constructor or assignment operator.