view gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
children
line wrap: on
line source

// { dg-do compile { target c++14 } }

constexpr void f1() {
  if (false)
    throw;
}

constexpr void f2() {
  if (true)
    throw;	// { dg-error "not a constant expression" }
}

constexpr void f3() {
  if (false)
    ;
  else
    throw;	// { dg-error "not a constant expression" }
}

constexpr void f4() {
  throw;	// { dg-error "not a constant expression" }
}

constexpr int fun(int n) {
  switch (n) {
  case 0:
    return 1;
  default:
    throw; // { dg-error "not a constant expression" }
  }
}

static_assert(fun(0), "");
static_assert(fun(1), ""); // { dg-error "non-constant|in .constexpr. expansion of" }