/* | |
TEST_OUTPUT: | |
--- | |
fail_compilation/fail9537.d(26): Error: `foo(tuple(1, 2))` is not an lvalue and cannot be modified | |
--- | |
*/ | |
struct Tuple(T...) | |
{ | |
T field; | |
alias field this; | |
} | |
Tuple!T tuple(T...)(T args) | |
{ | |
return Tuple!T(args); | |
} | |
auto ref foo(T)(auto ref T t) | |
{ | |
return t[0]; // t[0] is deduced to non-ref | |
} | |
void main() | |
{ | |
int* p = &foo(tuple(1, 2)); | |
} |