Don't generate constructor wrappers if a base class has a private constructor
g++-5 errors out with this now with errors such as:
default_constructor_wrap.cxx:665:27: error: use of deleted function ‘FFF::FFF()’
result = (FFF *)new FFF();
^
default_constructor_wrap.cxx:314:7: note: ‘FFF::FFF()’ is implicitly deleted because the default definition would be ill-formed:
class FFF : public F {
^
default_constructor_wrap.cxx:301:4: error: ‘F::~F()’ is private
~F() { }
^
default_constructor_wrap.cxx:314:7: error: within this context
This commit is contained in:
parent
1514e19efb
commit
3718b810c7
13 changed files with 45 additions and 72 deletions
|
|
@ -13,6 +13,16 @@
|
|||
SWIGWARN_D_MULTIPLE_INHERITANCE,
|
||||
SWIGWARN_PHP_MULTIPLE_INHERITANCE) AD; /* C#, D, Java, PHP multiple inheritance */
|
||||
|
||||
%warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE,
|
||||
SWIGWARN_CSHARP_MULTIPLE_INHERITANCE,
|
||||
SWIGWARN_D_MULTIPLE_INHERITANCE,
|
||||
SWIGWARN_PHP_MULTIPLE_INHERITANCE) GGG; /* C#, D, Java, PHP multiple inheritance */
|
||||
|
||||
%warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE,
|
||||
SWIGWARN_CSHARP_MULTIPLE_INHERITANCE,
|
||||
SWIGWARN_D_MULTIPLE_INHERITANCE,
|
||||
SWIGWARN_PHP_MULTIPLE_INHERITANCE) HHH; /* C#, D, Java, PHP multiple inheritance */
|
||||
|
||||
%warnfilter(SWIGWARN_LANG_FRIEND_IGNORE) F; /* friend function */
|
||||
|
||||
%delobject F::destroy;
|
||||
|
|
@ -103,14 +113,15 @@ public:
|
|||
|
||||
void bar(F *) { }
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#pragma warning(disable: 4624) // : destructor could not be generated because a base class destructor is inaccessible
|
||||
#endif
|
||||
// Single inheritance, base has private destructor
|
||||
class FFF : public F {
|
||||
};
|
||||
#if defined(_MSC_VER)
|
||||
#pragma warning(default: 4624) // : destructor could not be generated because a base class destructor is inaccessible
|
||||
#endif
|
||||
|
||||
// Multiple inheritance, one base has private destructor
|
||||
class GGG : public A, public F {
|
||||
};
|
||||
class HHH : public F, public A {
|
||||
};
|
||||
|
||||
/* A class with a protected destructor */
|
||||
class G {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue