From a7ea880eb24a36e09e50de7b8b32d941110aa630 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Tue, 4 Jul 2017 20:55:24 -0600 Subject: [PATCH] Fix issue 17482: Fix Nullable!Variant equality checks. --- std/typecons.d | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/std/typecons.d b/std/typecons.d index 6671f5e9d46..44b986ff759 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -2228,7 +2228,8 @@ Params: } /// Ditto - bool opEquals()(auto ref const(T) rhs) const + bool opEquals(U)(auto ref const(U) rhs) const + if (is(typeof(this.get == rhs))) { return _isNull ? false : rhs == _value; } @@ -2276,6 +2277,16 @@ Params: assert(a != Nullable!int(29)); } + // Issue 17482 + @system unittest + { + import std.variant : Variant; + Nullable!Variant a = Variant(12); + assert(a == 12); + Nullable!Variant e; + assert(e != 12); + } + template toString() { import std.format : FormatSpec, formatValue;