Currently, I (with the help of #D on irc.freenode.net) couldn't find any way to define a function or delegate literal returning a reference. our best guess at the syntax was delegate ref T (params) { body } or, to be more general, delegate ATTRIBUTE T (params) { body } example: void main() { auto bar = new int[5]; auto foo = delegate ref int(size_t i) { return bar[i]; }; } This example fails with the error "basic type expected, not ref". Note: even if this did work, assigning functions returning ref does not work properly, so this bug depends on #8064.
Changed to enhancement. This is not even something that exist in the grammar, which would have to be changed to something like delegate Typeopt refopt ParameterMemberAttributes opt FunctionLiteralBody
@BorisCarvajal updated dlang/dmd pull request #9558 "Fixes issues 16271, 18825, 8065, 5050 - Allow function literals return by reference" fixing this issue: - Fixes issues 16271, 18825, 8065, 5050 - Allow function literals return by reference https://github.com/dlang/dmd/pull/9558
dlang/dmd pull request #9558 "Fixes issues 16271, 18825, 8065, 5050 - Allow function literals return by reference" was merged into master: - 60251b8f0e191a8f0f5142ddd2d3807d0e06c58a by Boris Carvajal: Fixes issues 16271, 18825, 8065, 5050 - Allow function literals return by reference https://github.com/dlang/dmd/pull/9558