<div dir="ltr">Yes it is a regression, please fill a bug report</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 28, 2018 at 2:16 PM, drug via Digitalmars-d-learn <span dir="ltr"><<a href="mailto:digitalmars-d-learn@puremagic.com" target="_blank">digitalmars-d-learn@puremagic.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><a href="https://run.dlang.io/is/HJxtvw" rel="noreferrer" target="_blank">https://run.dlang.io/is/HJxtvw</a><br>
<br>
```<br>
import std.stdio, std.typecons, std.math;<br>
void main()<br>
{<br>
    auto foo = nullable(2.0);<br>
    auto bar = nullable(2.0);<br>
<br>
    assert (foo.approxEqual(bar));<br>
}<br>
```<br>
Comiling gives the following:<br>
Up to      2.067.1: Failure with output:<br>
-----<br>
onlineapp.d(4): Error: undefined identifier nullable, did you mean struct Nullable(T)?<br>
onlineapp.d(5): Error: undefined identifier nullable, did you mean struct Nullable(T)?<br>
-----<br>
<br>
2.068.2 to 2.072.2: Failure with output:<br>
-----<br>
onlineapp.d(4): Error: undefined identifier 'nullable', did you mean struct 'Nullable(T)'?<br>
onlineapp.d(5): Error: undefined identifier 'nullable', did you mean struct 'Nullable(T)'?<br>
-----<br>
<br>
2.073.2 to 2.077.1: Success and no output<br>
Since      2.078.1: Failure with output:<br>
-----<br>
/path/to/dmd.linux/dmd2/linux/<wbr>bin64/../../src/phobos/std/mat<wbr>h.d(7575): Error: template std.math.approxEqual cannot deduce function from argument types !()(Nullable!double, Nullable!double, double, double), candidates are:<br>
/path/to/dmd.linux/dmd2/linux/<wbr>bin64/../../src/phobos/std/mat<wbr>h.d(7499):      std.math.approxEqual(T, U, V)(T lhs, U rhs, V maxRelDiff, V maxAbsDiff = 1e-05) if ((isNumeric!T || isInputRange!T && isNumeric!(ElementType!T)) && (isNumeric!U || isInputRange!U && isNumeric!(ElementType!U)) && isNumeric!V)<br>
/path/to/dmd.linux/dmd2/linux/<wbr>bin64/../../src/phobos/std/mat<wbr>h.d(7573):      std.math.approxEqual(T, U)(T lhs, U rhs)<br>
onlineapp.d(7): Error: template instance std.math.approxEqual!(Nullable<wbr>!double, Nullable!double) error instantiating<br>
-----<br>
tldr - std.math.approxEqual stops deduced its args type when Nullable is used.<br>
</blockquote></div><br></div>