<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi Richard,</p>
<blockquote type="cite"
cite="mid:b78c231b-0b2f-8706-67e7-cc622be68f6e@in.terlu.de">
<pre class="moz-quote-pre" wrap="">Can you, please, try to explicitly delete the default ctors instead?
Find a patch attached.
</pre>
</blockquote>
<p>the patch leads to</p>
<p><span style="font-family:monospace"><span
style="color:#000000;background-color:#ffffff;">lst.h(35):
error C2280:
'GiNaC::class_info<GiNaC::registered_class_options>::class_info(void)':
attempting to reference a deleted function
</span><br>
class_info.h(48): note: see declaration of
'GiNaC::class_info<GiNaC::registered_class_options>::class_info'
<br>
class_info.h(48): note:
'GiNaC::class_info<GiNaC::registered_class_options>::class_info(void)':
function was explicitly deleted
<br>
exprseq.h(35): error C2280:
'GiNaC::class_info<GiNaC::registered_class_options>::class_info(void)':
attempting to reference a deleted function
<br>
class_info.h(48): note: see declaration of
'GiNaC::class_info<GiNaC::registered_class_options>::class_info'
<br>
class_info.h(48): note:
'GiNaC::class_info<GiNaC::registered_class_options>::class_info(void)':
function was explicitly deleted</span></p>
<p>But since these two lines are exactly those two which we need to
#ifdef away because of the C2766 error, both errors can be
resolved by a simple patch:</p>
<p><span style="font-family:monospace"><span
style="font-weight:bold;color:#000000;background-color:#ffffff;">diff
--git a/ginac/exprseq.h b/ginac/exprseq.h</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
<span
style="font-weight:bold;color:#000000;background-color:#ffffff;">index
dea1e38e..61a2527d 100644</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
<span
style="font-weight:bold;color:#000000;background-color:#ffffff;">---
a/ginac/exprseq.h</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
<span
style="font-weight:bold;color:#000000;background-color:#ffffff;">+++
b/ginac/exprseq.h</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
<span style="color:#18b2b2;background-color:#ffffff;">@@ -32,7
+32,10 @@</span><span
style="color:#000000;background-color:#ffffff;"> namespace
GiNaC {
</span><br>
typedef container<std::vector> exprseq;
<br>
<br>
/** Declaration of container::reg_info for exprseq. */
<br>
<span style="color:#18b218;background-color:#ffffff;">+#ifndef
_MSC_VER</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
<span style="color:#18b218;background-color:#ffffff;">+// Avoid
exprseq.cpp(27): error C2766: explicit specialization;
'reg_info' has already been defined</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
template<> registered_class_info exprseq::reg_info;
<br>
<span style="color:#18b218;background-color:#ffffff;">+#endif</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
<br>
// defined in exprseq.cpp
<br>
template<> bool exprseq::info(unsigned inf) const;
<br>
<span
style="font-weight:bold;color:#000000;background-color:#ffffff;">diff
--git a/ginac/lst.h b/ginac/lst.h</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
<span
style="font-weight:bold;color:#000000;background-color:#ffffff;">index
6b047c69..415abd03 100644</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
<span
style="font-weight:bold;color:#000000;background-color:#ffffff;">---
a/ginac/lst.h</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
<span
style="font-weight:bold;color:#000000;background-color:#ffffff;">+++
b/ginac/lst.h</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
<span style="color:#18b2b2;background-color:#ffffff;">@@ -32,7
+32,10 @@</span><span
style="color:#000000;background-color:#ffffff;"> namespace
GiNaC {
</span><br>
typedef container<std::list> lst;
<br>
<br>
/** Declaration of container::reg_info for lst. */
<br>
<span style="color:#18b218;background-color:#ffffff;">+#ifndef
_MSC_VER</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
<span style="color:#18b218;background-color:#ffffff;">+// Avoid
lst.cpp(28): error C2766: explicit specialization; 'reg_info'
has already been defined</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
template<> registered_class_info lst::reg_info;
<br>
<span style="color:#18b218;background-color:#ffffff;">+#endif</span><span
style="color:#000000;background-color:#ffffff;">
</span><br>
<br>
/** Specialization of container::get_default_flags() for lst. */
<br>
template<> inline unsigned lst::get_default_flags() {
return status_flags::not_shareable; }<br>
</span></p>
<p>This compiles and all checks pass.</p>
<p>By the way, both declaration and definition in lst.h/cpp and
exprseq.h/cpp seem to be superfluous, since even without them all
tests also pass successfully...</p>
<p>Jan</p>
<p><span style="font-family:monospace"></span></p>
</body>
</html>