Is this a bug in return type inference?
Meta via Digitalmars-d
digitalmars-d at puremagic.com
Sun Apr 26 14:09:57 PDT 2015
On Sunday, 26 April 2015 at 20:21:32 UTC, Ali Çehreli wrote:
> Yes, a bug for floating types only. It seems that not the
> common type but the first type is used among floating point
> types. I wrote a short program to prove it to myself:
>
> import std.traits;
> import std.typetuple;
> import std.format;
>
> auto foo(A, B)(int n)
> {
> if (n) {
> return A(0);
>
> } else {
>
> return B(0);
> }
> }
>
> void main()
> {
> alias types = TypeTuple!(float, double, real);
>
> foreach (A; types) {
> foreach (B; types) {
> alias ReturnType = typeof(foo!(A, B)(0));
>
> pragma(msg, format("%s %s -> %s%s",
> A.stringof, B.stringof,
> ReturnType.stringof,
> (is (ReturnType ==
> CommonType!(A, B))
> ? ""
> : " <-- BUG")));
> }
> }
> }
>
> float float -> float
> float double -> float <-- BUG
> float real -> float <-- BUG
> double float -> double
> double double -> double
> double real -> double <-- BUG
> real float -> real
> real double -> real
> real real -> real
>
> Ali
https://issues.dlang.org/show_bug.cgi?id=14506
More information about the Digitalmars-d
mailing list