[Issue 9823] New: Delegate accepting element not accepted in std.range.put
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Mar 27 22:26:29 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9823
Summary: Delegate accepting element not accepted in
std.range.put
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Phobos
AssignedTo: nobody at puremagic.com
ReportedBy: Jesse.K.Phillips+D at gmail.com
--- Comment #0 from Jesse Phillips <Jesse.K.Phillips+D at gmail.com> 2013-03-27 22:26:28 PDT ---
When providing a delegate to the std.range.put() function, compilation fails.
import std.range;
void main() {
string[] nameList1 = ["Anders", "David", "James", "Jeff", "Joe"];
void mySink(in char[] a) { }
auto r = &mySink;
static assert(isOutputRange!(typeof(r), string)); // Passes
put(r, nameList1); // Fails
}
std/range.d(611): Error: static assert "Cannot put a string[] into a void
delegate(const(char[]) a)"
------
This appears to be an issue of line 597
else static if ((usingPut || usingFront) && isInputRange!E &&
is(typeof(put(r, e.front))))
{
for (; !e.empty; e.popFront()) put(r, e.front);
}
Where it should be checking (!usingPut && !usingFront) as they refer to
usingPut: Use put method from struct or class.
usingFront: Output range is an InputRange and may accept assignment to front.
--
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