Mark de Wever ba15d186e5 [clang] Use -std=c++23 instead of -std=c++2b
During the ISO C++ Committee meeting plenary session the C++23 Standard
has been voted as technical complete.

This updates the reference to c++2b to c++23 and updates the __cplusplus
macro.

Drive-by fixes c++1z -> c++17 and c++2a -> c++20 when seen.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D149553
2023-05-04 19:19:52 +02:00

47 lines
813 B
C++

// RUN: %clang_cc1 -std=c++23 -fsyntax-only -fexperimental-new-constant-interpreter %s -verify
// RUN: %clang_cc1 -std=c++23 -fsyntax-only %s -verify=ref
// expected-no-diagnostics
// ref-no-diagnostics
namespace ConstEval {
constexpr int f() {
int i = 0;
if consteval {
i = 1;
}
return i;
}
static_assert(f() == 1, "");
constexpr int f2() {
int i = 0;
if !consteval {
i = 12;
if consteval {
i = i + 1;
}
}
return i;
}
static_assert(f2() == 0, "");
};
namespace InitDecl {
constexpr bool f() {
if (int i = 5; i != 10) {
return true;
}
return false;
}
static_assert(f(), "");
constexpr bool f2() {
if (bool b = false; b) {
return true;
}
return false;
}
static_assert(!f2(), "");
};