int isdigit(int c);
int isdigit(int c) __attribute__((enable_if(c <= -1 || c > 255, "chosen when 'c' is out of range"))) __attribute__((unavailable("'c' must have the value of an unsigned char or EOF")));
-
+
void foo(char c) {
isdigit(c);
isdigit(10);
void f() __attribute__((enable_if(true, ""))); // #1
void f() __attribute__((enable_if(true, ""))) __attribute__((enable_if(true, ""))); // #2
-
+
void g(int i, int j) __attribute__((enable_if(i, ""))); // #1
void g(int i, int j) __attribute__((enable_if(j, ""))) __attribute__((enable_if(true))); // #2
can only be placed before an @protocol or @interface declaration:
.. code-block:: objc
-
+
__attribute__((objc_runtime_name("MyLocalName")))
@interface Message
@end
-
+
}];
}
.. code-block: c++
struct [[nodiscard]] error_info { /*...*/ };
error_info enable_missile_safety_mode();
-
+
void launch_missiles();
void test_missiles() {
enable_missile_safety_mode(); // diagnoses
concurrently.
The syntax of the `declare simd` construct is as follows:
- .. code-block:: c
+ .. code-block:: none
- #pragma omp declare simd [clause[[,] clause] ...] new-line
- [#pragma omp declare simd [clause[[,] clause] ...] new-line]
- [...]
- function definition or declaration
+ #pragma omp declare simd [clause[[,] clause] ...] new-line
+ [#pragma omp declare simd [clause[[,] clause] ...] new-line]
+ [...]
+ function definition or declaration
where clause is one of the following:
- .. code-block:: c
+ .. code-block:: none
- simdlen(length)
- linear(argument-list[:constant-linear-step])
- aligned(argument-list[:alignment])
- uniform(argument-list)
- inbranch
- notinbranch
+ simdlen(length)
+ linear(argument-list[:constant-linear-step])
+ aligned(argument-list[:alignment])
+ uniform(argument-list)
+ inbranch
+ notinbranch
}];
}
.. code-block:: c
- #pragma omp declare target new-line
- declarations-definition-seq
- #pragma omp end declare target new-line
+ #pragma omp declare target new-line
+ declarations-definition-seq
+ #pragma omp end declare target new-line
}];
}