digitalmars.D.learn - The Phobos put()
- Salih Dincer (29/32) Mar 29 2023 /dlang/dmd/linux/bin64/../../src/phobos/std/range/primitives.d(386): ...
Why does my `put` work but the Phobos `put` doesn't work with a slice?onlineapp.d(11): Error: none of the overloads of template `std.range.primitives.put` are callable using argument types `!()(int[], int[])`/dlang/dmd/linux/bin64/../../src/phobos/std/range/primitives.d(386): Candidate is: `put(R, E)(ref R r, E e)` ```d void main() { import std.range : phobos_put = put; enum testLen = 4; auto a = new int[testLen]; auto b = new int[testLen]; auto slice = a[1..$-1]; slice.phobos_put([2, 3]); //a[1..$-1].phobos_put([2, 3]); b[1..$-1].put([2, 3]); import std.conv : text; assert(a == b, text(a)); } void put(R)(R[] range, R[] source) { assert(source.length <= range.length); foreach(element; source) { range[0] = element; // range.front() range = range[1..$]; // range popFront() } } ``` SDB 79
Mar 29 2023