Si consideri il seguente modello:D: indesiderati funzione anonima attribuisce
mixin template test(void function() callback)
{
static this()
{
callback();
}
}
Questo funziona:
mixin test!(&sort_arr);
void sort_arr()
{
arr.sort;
}
Tuttavia questo non funziona:
mixin test!({ arr.sort; });
DMD dà il seguente errore :
Error: safe function 'main.__lambda6' cannot call system function '_adSort'
Error: @nogc function 'main.__lambda6' cannot call [email protected] function '_adSort'
Mi sembra che la versione lambda sia dedotta per essere safe @nogc
, mentre l'esplicito sort_arr
non lo è.
Come posso superare questo e passare un lambda anonimo a questo modello?
Edit: bug report archiviato come da raccomandazione nella risposta accettata: https://issues.dlang.org/show_bug.cgi?id=13481
Stavo puntando a 'std.algorithm.sort', non mi rendevo conto che ce n'è uno incorporato ... –
Per chiarire, è necessario importare' std.algorithm' e fare 'arr.sort () 'invece di' arr.sort'. Questo è per ragioni storiche e non sarà necessario alla fine una volta rimosso l'ordinamento predefinito. – Meta