| /* |
| TEST_OUTPUT: |
| --- |
| fail_compilation/fail9936.d(25): Error: S().opBinary isn't a template |
| fail_compilation/fail9936.d(26): Error: S().opBinaryRight isn't a template |
| fail_compilation/fail9936.d(27): Error: S().opOpAssign isn't a template |
| fail_compilation/fail9936.d(29): Error: S().opIndexUnary isn't a template |
| fail_compilation/fail9936.d(30): Error: S().opUnary isn't a template |
| --- |
| */ |
| struct S |
| { |
| auto opBinary(S s) { return 1; } |
| auto opBinaryRight(int n) { return 1; } |
| auto opOpAssign(S s) { return 1; } |
| |
| auto opIndexUnary(S s) { return 1; } |
| auto opUnary(S s) { return 1; } |
| } |
| void main() |
| { |
| static assert(!is(typeof( S() + S() ))); |
| static assert(!is(typeof( 100 + S() ))); |
| static assert(!is(typeof( S() += S() ))); |
| S() + S(); |
| 100 + S(); |
| S() += S(); |
| |
| +S()[0]; |
| +S(); |
| } |