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
|
|
@ -1,6 +1,5 @@
|
|||
module default_constructor_runme;
|
||||
|
||||
import default_constructor.FFF;
|
||||
import default_constructor.G;
|
||||
|
||||
void main() {
|
||||
|
|
@ -15,16 +14,4 @@ void main() {
|
|||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
// Private destructor test.
|
||||
try {
|
||||
{
|
||||
scope f = new FFF();
|
||||
}
|
||||
throw new Exception("Private destructor exception should have been thrown");
|
||||
} catch (Exception e) {
|
||||
if (e.msg != "C++ destructor does not have public access") {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue