http://d.puremagic.com/issues/show_bug.cgi?id=8434
Summary: [2.060 beta] cannot implicitly convert expression (vs1.opCast()) of type const(Vector2D) to object.Object Product: D Version: D2 Platform: x86_64 OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: rswhi...@googlemail.com --- Comment #0 from rswhi...@googlemail.com 2012-07-25 07:29:16 PDT --- [code] import std.conv : to; class Vector2D(T) { public: T x, y; this(T x, T y) { this.x = x; this.y = y; } U opCast(U)() const { return new U(x, y); } } alias Vector2D!(short) Vector2s; alias Vector2D!(float) Vector2f; void main() { Vector2s vs1 = new Vector2s(42, 23); Vector2s vs2 = new Vector2s(42, 23); assert(vs1 == vs2); } [/code] prints: dmd -w -O -property -unittest -debug -of"vec_test_2060" "vec_test_2060.d" (im Verzeichnis: D:\D\D_Scripts\Test 4) vec_test_2060.d(13): Error: no constructor for Object vec_test_2060.d(24): Error: template instance vec_test_2060.Vector2D!(short).Vector2D.opCast!(Object) error instantiating Kompilierung fehlgeschlagen. And this code: [code] import std.conv : to; class Vector2D(T) { public: T x, y; this(T x, T y) { this.x = x; this.y = y; } U opCast(U : inout(Vector2D!V), V)() const { return new U(x, y); } } alias Vector2D!(short) Vector2s; alias Vector2D!(float) Vector2f; void main() { Vector2s vs1 = new Vector2s(42, 23); Vector2s vs2 = new Vector2s(42, 23); assert(vs1 == vs2); } [/code] prints: dmd -w -O -property -unittest -debug -of"vec_test_2060" "vec_test_2060.d" (im Verzeichnis: D:\D\D_Scripts\Test 4) vec_test_2060.d(24): Error: template instance opCast!(Object) opCast!(Object) does not match template declaration opCast(U : inout(Vector2D!(V)),V) vec_test_2060.d(24): Error: function expected before (), not vs1.opCast!(Object) of type void vec_test_2060.d(24): Error: template instance opCast!(Object) opCast!(Object) does not match template declaration opCast(U : inout(Vector2D!(V)),V) vec_test_2060.d(24): Error: function expected before (), not vs2.opCast!(Object) of type void Kompilierung fehlgeschlagen. If i add to the last code this: [code] const(U) opCast(U = typeof(this))() const { return this; } [/code] I get: dmd -w -O -property -unittest -debug -of"vec_test_2060" "vec_test_2060.d" (im Verzeichnis: D:\D\D_Scripts\Test 4) vec_test_2060.d(28): Error: cannot implicitly convert expression (vs1.opCast()) of type const(Object) to object.Object vec_test_2060.d(28): Error: cannot implicitly convert expression (vs2.opCast()) of type const(Object) to object.Object Kompilierung fehlgeschlagen. With 2.059 both works fine. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------