@@ -1226,34 +1226,33 @@ Series!(K*, V*) series(RK, RV, K = RK, V = RV)(RV[RK] aa)
12261226 import mir.conv: to;
12271227 const size_t length = aa.length;
12281228 alias R = typeof (return );
1229- Series! (Unqual! K* , Unqual! V* ) ret;
12301229 if (__ctfe)
12311230 {
1232- Unqual ! K[] keys ;
1233- Unqual ! V[] values ;
1231+ K[] keys ;
1232+ V[] values ;
12341233 foreach (kv; aa.byKeyValue )
12351234 {
12361235 keys ~= kv.key.to! K;
12371236 values ~= kv.value.to! V;
12381237 }
1239- ret = series(keys , values );
1238+ auto ret = series(keys , values );
1239+ .sort((()@trusted => cast (Series! (Unqual! K* , Unqual! V* ))ret)());
1240+ static if (is (typeof (ret) == typeof (return )))
1241+ return ret;
1242+ else
1243+ return ()@trusted { return cast (R) ret; }();
12401244 }
1241- else
1245+ import mir.ndslice.allocation: uninitSlice;
1246+ Series! (Unqual! K* , Unqual! V* ) ret = series(length.uninitSlice! (Unqual! K), length.uninitSlice! (Unqual! V));
1247+ auto it = ret;
1248+ foreach (kv; aa.byKeyValue )
12421249 {
1243- import mir.ndslice.allocation: uninitSlice;
1244-
1245- ret = series(length.uninitSlice! (Unqual! K), length.uninitSlice! (Unqual! V));
1246- auto it = ret;
1247- foreach (kv; aa.byKeyValue )
1248- {
1249- import mir.conv: emplaceRef;
1250- emplaceRef! K(it.index.front, kv.key.to! K);
1251- emplaceRef! V(it._data.front, kv.value.to! V);
1252- it.popFront;
1253- }
1250+ import mir.conv: emplaceRef;
1251+ emplaceRef! K(it.index.front, kv.key.to! K);
1252+ emplaceRef! V(it._data.front, kv.value.to! V);
1253+ it.popFront;
12541254 }
1255-
1256- ret.sort;
1255+ .sort(ret);
12571256 static if (is (typeof (ret) == typeof (return )))
12581257 return ret;
12591258 else
0 commit comments