digitalmars.D.bugs - [Issue 17251] New: Appender.put errors out with const input range
- via Digitalmars-d-bugs (47/47) Mar 10 2017 https://issues.dlang.org/show_bug.cgi?id=17251
https://issues.dlang.org/show_bug.cgi?id=17251 Issue ID: 17251 Summary: Appender.put errors out with const input range elements Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: phobos Assignee: nobody puremagic.com Reporter: sludwig outerproduct.org The following snippet: --- import std.array : appender; static struct R { int front() const { return 0; } bool empty() const { return true; } void popFront() {} } auto app = appender!(R[]); const(R)[1] r; app.put(r[0]); app.put(r[]); --- Results in: --- Error: std.array.Appender!(R[]).Appender.put called with argument types (const(R)) matches both: array.d(2821,10): std.array.Appender!(R[]).Appender.put!(const(R)).put(const(R) item) and: array.d(2849,10): std.array.Appender!(R[]).Appender.put!(const(R)).put(const(R) items) Error: template std.array.Appender!(R[]).Appender.put cannot deduce function from argument types !()(const(R)[]), candidates are: array.d(2821,10): std.array.Appender!(R[]).Appender.put(U)(U item) if (canPutItem!U) array.d(2849,10): std.array.Appender!(R[]).Appender.put(Range)(Range items) if (canPutConstRange!Range) array.d(2858,10): std.array.Appender!(R[]).Appender.put(Range)(Range items) if (canPutRange!Range) --- Putting non-const items on the other hand works fine. --
Mar 10 2017