| /* |
| 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(); |
| } |