Use placement new when storing value in wxAnyValueBuffer. This should allow using any data type, regardless whether it is Plain Old Data or copyable or not.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64623 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Jaakko Salli
2010-06-18 13:18:22 +00:00
parent 8544926238
commit 94cd7b004d
2 changed files with 14 additions and 28 deletions

View File

@@ -45,27 +45,8 @@
When compared to wxVariant, there are various internal implementation
differences as well. For instance, wxAny only allocates separate data
object in heap for large (i.e. size in bytes more than
WX_ANY_VALUE_BUFFER_SIZE) or non-POD (Plain Old Data) data types.
Pointers, integers, bools etc. are fitted in the wxAny's internal buffer
without need for any extra allocation. It is possible that wxAny cannot
automatically determine if your own data structure is considered a
POD or not, so you may need to declare it as such explicitly, using
code like this:
@code
#include "wx/meta/pod.h"
WX_DECLARE_TYPE_POD(MyPodStruct)
@endcode
Be extra careful what you declare as Plain Old Data. It must be such data
that can be copied with memcpy() without corrupting program integrity. For
instance, POD structures usually cannot contain pointers or references to
other data. wxRect, wxPoint, and wxSize are good examples of POD
classes.
Note that pointers to any and all types are already automatically
declared as Plain Old Data.
object in heap for large objects (i.e. ones with size more than
WX_ANY_VALUE_BUFFER_SIZE, which at the time of writing is 16 bytes).
@library{wxbase}
@category{data}