aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/tm/noexcept-2.C
blob: d2282489e31e72929dc958a60c0cf5df484f3497 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// { dg-do compile { target c++11 } }
// { dg-options "-fgnu-tm" }

// All of these must fail, because they are not constant expressions.
template<typename T> int foo(int x, T t)
{
  __transaction_atomic noexcept(t) { x++; }      /* { dg-error "not a constant" } */
  return __transaction_atomic noexcept(t) (x+1); /* { dg-error "not a constant" } */
}

int bar(int x)
{
  __transaction_atomic noexcept(x == 23) { x++; }      /* { dg-error "not a constant" } */
  return __transaction_atomic noexcept(x == 42) (x+1); /* { dg-error "not a constant" } */
}

int f(int x)
{
  return foo<bool>(x, true);
}