We need a non-template ctor to make the code initializing wxWeakRef with
literal NULL to compile.
Closes #11916.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63934
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// Default ctor
wxWeakRef() { }
+ // Ctor from the object of this type: this is needed as the template ctor
+ // below is not used by at least g++4 when a literal NULL is used
+ wxWeakRef(T *pobj)
+ {
+ Assign(pobj);
+ }
+
// When we have the full type here, static_cast<> will always work
// (or give a straight compiler error).
template <class TDerived>
void WeakRefTestCase::DeclareTest()
{
{
+ // Not initializing or initializing with NULL should work too
+ wxWeakRef<wxEvtHandler> wroDef;
+ wxWeakRef<wxEvtHandler> wro0(NULL);
+
wxObject o; // Should not work
wxEvtHandler eh;
wxObjectTrackable ot;
// Should be reset now
CPPUNIT_ASSERT( !wro1 );
CPPUNIT_ASSERT( !wro2 );
+
+ // Explicitly resetting should work too
+ wxEvtHandler eh;
+ wxObjectTrackable ot;
+
+ wro1 = &eh;
+ wro2 = &ot;
+
+ wro1 = NULL;
+ wro2 = NULL;
+
+ CPPUNIT_ASSERT( !wro1 );
+ CPPUNIT_ASSERT( !wro2 );
}
void WeakRefTestCase::AssignWeakRefTest()