summaryrefslogtreecommitdiff
path: root/xsd/xsd
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2020-12-25 11:59:14 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2021-02-25 13:45:49 +0300
commit7eaca4def408b73fdbc3362242569416341a24a3 (patch)
tree84933cb6d15906fe56576550d5f54beb4cee1d7b /xsd/xsd
parentfea8db080353e408a38ad9b66b50b1c9dfaf96de (diff)
Fix GCC 'implicitly-declared operator=() is deprecated' warning
Note that since c++11 the generation of the implicit copy assignment operator is deprecated for a class with a user-defined copy constructor.
Diffstat (limited to 'xsd/xsd')
-rw-r--r--xsd/xsd/cxx/tree/tree-header.cxx38
1 files changed, 38 insertions, 0 deletions
diff --git a/xsd/xsd/cxx/tree/tree-header.cxx b/xsd/xsd/cxx/tree/tree-header.cxx
index 1987953..99a9b17 100644
--- a/xsd/xsd/cxx/tree/tree-header.cxx
+++ b/xsd/xsd/cxx/tree/tree-header.cxx
@@ -252,6 +252,12 @@ namespace CXX
<< container << "* c = 0);"
<< endl;
+ os << "#ifdef XSD_CXX11" << endl
+ << name << "&" << endl
+ << "operator= (const " << name << "&) = default;"
+ << "#endif" << endl
+ << endl;
+
// clone
//
if (doxygen)
@@ -527,6 +533,12 @@ namespace CXX
<< container << "* c = 0);"
<< endl;
+ os << "#ifdef XSD_CXX11" << endl
+ << name << "&" << endl
+ << "operator= (const " << name << "&) = default;"
+ << "#endif" << endl
+ << endl;
+
// clone
//
if (doxygen)
@@ -942,6 +954,12 @@ namespace CXX
<< container << "* c = 0);"
<< endl;
+ os << "#ifdef XSD_CXX11" << endl
+ << name << "&" << endl
+ << "operator= (const " << name << "&) = default;"
+ << "#endif" << endl
+ << endl;
+
// clone
//
if (doxygen)
@@ -3319,11 +3337,14 @@ namespace CXX
// operator=
//
bool priv (false);
+ bool asop (true);
if (!simple)
{
if (options.suppress_assignment ())
{
+ asop = false;
+
priv = true;
os << "private:" << endl;
@@ -3343,6 +3364,8 @@ namespace CXX
}
else if (has_members || (gen_wildcard && (hae || haa)))
{
+ asop = false;
+
if (doxygen)
{
os << "/**" << endl
@@ -3371,6 +3394,15 @@ namespace CXX
if (priv)
os << "public:" << endl;
+ if (asop)
+ {
+ os << "#ifdef XSD_CXX11" << endl
+ << name << "&" << endl
+ << "operator= (const " << name << "&) = default;"
+ << "#endif" << endl
+ << endl;
+ }
+
// d-tor
//
if (doxygen)
@@ -3872,6 +3904,12 @@ namespace CXX
flags_type << " f = 0);"
<< endl;
+ os << "#ifdef XSD_CXX11" << endl
+ << name << "&" << endl
+ << "operator= (const " << name << "&) = default;"
+ << "#endif" << endl
+ << endl;
+
// _clone
//
if (doxygen)