aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/gomp/declare-variant-1.C
blob: ece80d35dd72b6ada6aeefd5ac53174dc9c5dd5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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);