+/**
+ This macro can be used in a class declaration to disable the generation of
+ default assignment operator.
+
+ Some classes have a well-defined copy constructor but cannot have an
+ assignment operator, typically because they can't be modified once created.
+ In such case, this macro can be used to disable the automatic assignment
+ operator generation.
+
+ @see DECLARE_NO_COPY_CLASS()
+ */
+#define DECLARE_NO_ASSIGN_CLASS(classname)
+
+/**
+ This macro can be used in a class declaration to disable the generation of
+ default copy ctor and assignment operator.
+
+ Some classes don't have a well-defined copying semantics. In this case the
+ standard C++ convention is to not allow copying them. One way of achieving
+ it is to use this macro which simply defines a private copy constructor and
+ assignment operator.
+
+ Beware that simply not defining copy constructor and assignment operator is
+ @em not enough as the compiler would provide its own automatically-generated
+ versions of them -- hence the usefulness of this macro.
+
+ Example of use:
+ @code
+ class FooWidget
+ {
+ public:
+ FooWidget();
+ ...
+
+ private:
+ // widgets can't be copied
+ DECLARE_NO_COPY_CLASS(FooWidget)
+ };
+ @endcode
+
+ Notice that a semicolon should not be used after this macro and that it
+ changes the access specifier to private internally so it is better to use
+ it at the end of the class declaration.
+ */
+#define DECLARE_NO_COPY_CLASS(classname)
+
+/**
+ Equivalent of DECLARE_NO_COPY_CLASS() for template classes.
+
+ This macro can be used for template classes (with a single template
+ parameter) for the same purpose as DECLARE_NO_COPY_CLASS() is used with the
+ non-template classes.
+
+ @param classname The name of the template class.
+ @param arg The name of the template parameter.
+ */
+#define DECLARE_NO_COPY_TEMPLATE_CLASS(classname, arg)
+
+/**
+ A function which deletes and nulls the pointer.
+
+ This function uses operator delete to free the pointer and also sets it to
+ @NULL. Notice that this does @em not work for arrays, use wxDELETEA() for
+ them.
+
+ @code
+ MyClass *ptr = new MyClass;
+ ...
+ wxDELETE(ptr);
+ wxASSERT(!ptr);
+ @endcode
+
+ @header{wx/defs.h}
+*/
+template <typename T> wxDELETE(T*& ptr);
+
+/**
+ A function which deletes and nulls the pointer.
+
+ This function uses vector operator delete (@c delete[]) to free the array
+ pointer and also sets it to @NULL. Notice that this does @em not work for
+ non-array pointers, use wxDELETE() for them.
+
+ @code
+ MyClass *array = new MyClass[17];
+ ...
+ wxDELETEA(array);
+ wxASSERT(!array);
+ @endcode
+
+ @see wxDELETE()
+
+ @header{wx/defs.h}
+*/
+template <typename T> wxDELETEA(T*& array);
+