File: static-assert-ext.cpp

package info (click to toggle)
llvm-toolchain-20 1%3A20.1.8-1~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 2,111,388 kB
  • sloc: cpp: 7,438,767; ansic: 1,393,871; asm: 1,012,926; python: 241,728; f90: 86,635; objc: 75,411; lisp: 42,144; pascal: 17,286; sh: 10,027; ml: 5,082; perl: 4,730; awk: 3,523; makefile: 3,349; javascript: 2,251; xml: 892; fortran: 672
file content (28 lines) | stat: -rw-r--r-- 1,702 bytes parent folder | download | duplicates (10)
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
// RUN: %clang_cc1 -std=c++98 -fsyntax-only -pedantic %s -verify=precxx11,precxx17,precxx26
// RUN: %clang_cc1 -std=c++11 -fsyntax-only -pedantic %s -verify=since-cxx11,precxx17,precxx26 -Wc++98-compat
// RUN: %clang_cc1 -std=c++17 -fsyntax-only -pedantic %s -verify=since-cxx11,since-cxx17,precxx26 -Wc++98-compat -Wpre-c++17-compat
// RUN: %clang_cc1 -std=c++26 -fsyntax-only -pedantic %s -verify=since-cxx11,since-cxx17,since-cxx26 -Wc++98-compat -Wpre-c++17-compat -Wpre-c++26-compat

static_assert(false, "a");
// precxx11-error@-1 {{a type specifier is required for all declarations}}
// since-cxx11-warning@-2 {{'static_assert' declarations are incompatible with C++98}}
// since-cxx11-error@-3 {{static assertion failed: a}}

#if __cplusplus >= 201103L
static_assert(false);
// since-cxx11-warning@-1 {{'static_assert' declarations are incompatible with C++98}}
// precxx17-warning@-2 {{'static_assert' with no message is a C++17 extension}}
// since-cxx17-warning@-3 {{'static_assert' with no message is incompatible with C++ standards before C++17}}
// since-cxx11-error@-4 {{static assertion failed}}

struct X {
    static constexpr int size() { return 1; } // since-cxx11-warning {{'constexpr'}}
    static constexpr const char* data() { return "b"; } // since-cxx11-warning {{'constexpr'}}
};

static_assert(false, X());
// since-cxx11-warning@-1 {{'static_assert' declarations are incompatible with C++98}}
// precxx26-warning@-2 {{'static_assert' with a user-generated message is a C++26 extension}}
// since-cxx26-warning@-3 {{'static_assert' with a user-generated message is incompatible with C++ standards before C++26}}
// since-cxx11-error@-4 {{static assertion failed: b}}
#endif