[Issue 4880] New: [patch] std.range.put does not handle output ranges implement via opDispatch; breaks on RefAppender
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Sep 17 10:15:28 PDT 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4880
Summary: [patch] std.range.put does not handle output ranges
implement via opDispatch; breaks on RefAppender
Product: D
Version: D2
Platform: Other
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: Phobos
AssignedTo: nobody at puremagic.com
ReportedBy: sandford at jhu.edu
--- Comment #0 from Rob Jacques <sandford at jhu.edu> 2010-09-17 10:14:54 PDT ---
std.range.put does not correctly introspect types which implement put via
opDispatch. This is fairly simple to fix by swapping hasMember out for a
__traits compiles test.
void put(R, E)(ref R r, E e)
{
+ static if (__traits(compiles, {return R.init.put(E.init);}) )
- static if (hasMember!(R, "put") ||
- (isPointer!R && is(pointerTarget!R == struct) &&
- hasMember!(pointerTarget!R, "put")))
{
--
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