[Issue 4968] New: inout is sticky to function return type

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Oct 1 14:57:46 PDT 2010


http://d.puremagic.com/issues/show_bug.cgi?id=4968

           Summary: inout is sticky to function return type
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: tomash.brechko at gmail.com


--- Comment #0 from Tomash Brechko <tomash.brechko at gmail.com> 2010-10-01 14:57:27 PDT ---
Call to writeln(f(i)) below won't compile because dmd 2.049 thinks f() returns
"inout(int)", so "void writeln(T...)(T args)" expands to "void
writeln(inout(int)...(inout(int) args)", and inout parameter requires inout
return type.  Rewriting "void" as "inout(void)" helps, but obviously is wrong.

import std.stdio;

inout(int)
f(inout int i)
{
  return i;
}

void
main()
{
  int i;

  writeln(typeof(f(i)).stringof); // Outputs "inout(int)", not "int".

  int j = f(i);
  writeln(i); // Works OK :).

  writeln(f(i)); // Won't compile :(.
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list