| /* | |
| TEST_OUTPUT: | |
| --- | |
| fail_compilation/fail13336a.d(28): Error: `choose(true)` is not an lvalue and cannot be modified | |
| --- | |
| */ | |
| class Animal {} | |
| class Cat : Animal {} | |
| class Dog : Animal {} | |
| Animal animal; | |
| Cat cat; | |
| auto ref choose(bool f) | |
| { | |
| if (f) | |
| return cat; | |
| else | |
| return animal; | |
| } | |
| void main() | |
| { | |
| //pragma(msg, typeof(&choose)); | |
| static assert(is(typeof(&choose) == Animal function(bool) nothrow @nogc @safe)); // pass | |
| choose(true) = new Dog(); | |
| } |