struct S { void foo (); void bar (const S &x); #if __cplusplus >= 201103L S &baz (const S &x); S &qux (S &&x); #endif void quux (int x); #pragma omp declare variant (foo) match (user={condition(0)}) // { dg-error "'declare variant' on constructor" } S (); #pragma omp declare variant (foo) match (user={condition(0)}) // { dg-error "'declare variant' on destructor" } ~S (); #pragma omp declare variant (bar) match (user={condition(0)}) // { dg-error "'declare variant' on constructor" } S (const S &x); #pragma omp declare variant (quux) match (user={condition(0)}) // { dg-error "'declare variant' on constructor" } S (int x); #if __cplusplus >= 201103L #pragma omp declare variant (baz) match (user={condition(0)}) // { dg-error "'declare variant' on defaulted" "" { target c++11 } } S &operator= (const S &x) = default; #pragma omp declare variant (qux) match (user={condition(0)}) // { dg-error "'declare variant' on deleted" "" { target c++11 } } S &operator= (S &&) = delete; #endif int s; }; void corge (int); #pragma omp declare variant (corge) match (user={condition(0)}) void grault (int x);