digitalmars.D.learn - CTFE sort of tuples
- Andrey (6/29) May 01 2019 I want to sort array of tuples using "data" element in CTFE. But
- Stefan Koch (4/12) May 02 2019 write a sort?
- Timon Gehr (2/19) May 03 2019 Well, clearly, we should be able to /swap values/ at compile time.
Hello, I have got this code:alias Group = Tuple!(int[], "data", int, "key"); void main() { enum group = [ Group([1,2,3,4], 1), Group([5,3], 1), Group([4,5,4, 8, 9, 4], 1), Group([2,3,4], 1), ]; enum result = group.sort!"a.data < b.data"().array(); }I want to sort array of tuples using "data" element in CTFE. But this code give me errors:/dlang/dmd/linux/bin64/../../src/phobos/std/algorithm/mutation.d(2782): Error: reinterpreting cast from Tuple!(int[], "data", int, "key")* to ubyte* is not supported in CTFE /dlang/dmd/linux/bin64/../../src/phobos/std/algorithm/mutation.d(3014): called from here: swap(r[i1], r[i2]) /dlang/dmd/linux/bin64/../../src/phobos/std/algorithm/sorting.d(1672): called from here: swapAt(r, 2LU, 3LU) /dlang/dmd/linux/bin64/../../src/phobos/std/algorithm/sorting.d(2112): called from here: shortSort(r) /dlang/dmd/linux/bin64/../../src/phobos/std/algorithm/sorting.d(1875): called from here: quickSortImpl(r, r.length) onlineapp.d(32): called from here: sort([Tuple([1, 2, 3, 4], 1), Tuple([5, 3], 1), Tuple([4, 5, 4, 8, 9, 4], 1), Tuple([2, 3, 4], 1)]) onlineapp.d(32): called from here: array(sort([Tuple([1, 2, 3, 4], 1), Tuple([5, 3], 1), Tuple([4, 5, 4, 8, 9, 4], 1), Tuple([2, 3, 4], 1)]))As I understand the function "sort" sometimes can't be run at CT because of reinterpreting cast. In this case how to sort?
May 01 2019
On Thursday, 2 May 2019 at 02:54:03 UTC, Andrey wrote:Hello, I have got this code:write a sort? a bubble-sort should be sufficient for if the arrays are as short as in the example.[...]I want to sort array of tuples using "data" element in CTFE. But this code give me errors:[...]As I understand the function "sort" sometimes can't be run at CT because of reinterpreting cast. In this case how to sort?
May 02 2019
On 02.05.19 09:28, Stefan Koch wrote:On Thursday, 2 May 2019 at 02:54:03 UTC, Andrey wrote:Well, clearly, we should be able to /swap values/ at compile time.Hello, I have got this code:write a sort? a bubble-sort should be sufficient for if the arrays are as short as in the example.[...]I want to sort array of tuples using "data" element in CTFE. But this code give me errors:[...]As I understand the function "sort" sometimes can't be run at CT because of reinterpreting cast. In this case how to sort?
May 03 2019