digitalmars.D.bugs - [Issue 4424] New: Copy constructor and templated opAssign cannot coexist
- d-bugmail puremagic.com (29/29) Jul 04 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4424
- d-bugmail puremagic.com (11/11) Jul 04 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4424
- d-bugmail puremagic.com (23/23) Sep 23 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4424
- d-bugmail puremagic.com (20/20) Apr 28 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4424
- d-bugmail puremagic.com (13/13) Aug 16 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4424
- d-bugmail puremagic.com (10/10) Feb 06 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4424
- d-bugmail puremagic.com (10/10) Aug 01 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4424
- d-bugmail puremagic.com (16/17) Oct 03 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4424
- d-bugmail puremagic.com (12/12) Oct 07 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4424
- d-bugmail puremagic.com (10/10) Nov 03 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4424
- d-bugmail puremagic.com (8/8) May 27 2013 http://d.puremagic.com/issues/show_bug.cgi?id=4424
http://d.puremagic.com/issues/show_bug.cgi?id=4424 Summary: Copy constructor and templated opAssign cannot coexist Product: D Version: 2.041 Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: rsinfu gmail.com --- Templated opAssign cannot be declared in a struct with copy constructor. -------------------- test.d struct S { this(this) {} void opAssign(T)(T rhs) if (! is(T == S)) {} } -------------------- % dmd -o- -c test test.d: Error: function test.S.opAssign conflicts with template test.S.opAssign(T) if (!is(T == S)) at test.d(4) -------------------- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 04 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4424 Andrei Alexandrescu <andrei metalanguage.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |andrei metalanguage.com 15:19:12 PDT --- That's an important issue. I just committed a fix to Tuple that replaces opAssign with assign, but that should only be considered a workaround. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 04 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4424 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |clugdbug yahoo.com.au Don't have a full patch yet, but this is where the problem is. clone.c, StructDeclaration::buildOpAssign(). Parameter *param = new Parameter(STCnodtor, type, Id::p, NULL); Parameters *fparams = new Parameters; fparams->push(param); Type *ftype = new TypeFunction(fparams, handle, FALSE, LINKd); #if STRUCTTHISREF ((TypeFunction *)ftype)->isref = 1; #endif fop = new FuncDeclaration(0, 0, Id::assign, STCundefined, ftype); + Dsymbol *s = search_function(this, Id::assign); + TemplateDeclaration *td = s ? s->isTemplateDeclaration() : NULL; + if (td) + { // we need to make a template function instead -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 23 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4424 Created an attachment (id=955) test cases Patch created: https://github.com/9rnsr/dmd/compare/master...fix4424 Behaviors: - if template opAssign exists, check it is identity opAssign. - if template identity opAssign need, following opAsign build: ref S opAsign(T:S)(T s) if (is(T == S)) { T tmp = this; // bit copy this = s; // bit copy tmp.dtor(); return this; } - no changes with non tempate opAssign. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 28 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4424 Cristi Cobzarenco <cristi.cobzarenco gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |cristi.cobzarenco gmail.com 14:03:26 PDT --- The link Kenji posted is not working any more. Here's a link to his pull request that fixes this issue, as well as Issue 6216: https://github.com/D-Programming-Language/dmd/pull/166 I hope this gets pulled soon. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 16 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4424 kennytm gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kennytm gmail.com *** Issue 7427 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 06 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4424 Dmitry Olshansky <dmitry.olsh gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dmitry.olsh gmail.com 14:28:56 PDT --- I've hit this one today and failed to workaround it in any acceptable way. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 01 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4424 Benjamin Thaut <code benjamin-thaut.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |code benjamin-thaut.de PDT ---I've hit this one today and failed to workaround it in any acceptable way.This is the workaround used in phobos, it works pretty well for me too. private mixin template _workaround4424() { disable void opAssign(typeof(this) ); } mixin _workaround4424; -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 03 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4424 yebblies <yebblies gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |yebblies gmail.com Resolution| |FIXED https://github.com/D-Programming-Language/dmd/commit/5b42e51481d186ee5e3c2684a237a05cea33a0cf -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 07 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4424 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |malteskarupke web.de *** Issue 8926 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Nov 03 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4424 Commit pushed to master at https://github.com/D-Programming-Language/phobos https://github.com/D-Programming-Language/phobos/commit/ff056812b0b7d11f245f69f0ea4448728f2d95b8 Remove workaround for the compiler bug 4424 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 27 2013