File: constexpr-array-ptr8.C

package info (click to toggle)
gcc-arm-none-eabi 15%3A8-2019-q3-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 571,828 kB
  • sloc: ansic: 2,937,651; cpp: 881,644; ada: 597,189; makefile: 65,528; asm: 56,499; xml: 46,621; exp: 24,747; sh: 19,684; python: 7,256; pascal: 4,370; awk: 3,497; perl: 2,695; yacc: 316; ml: 285; f90: 234; lex: 198; objc: 194; haskell: 119
file content (54 lines) | stat: -rw-r--r-- 1,092 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// PR c++/57047
// { dg-require-effective-target c++11 }

template <typename>
struct A;
template <typename T>
struct A <T &>
{
  typedef T type;
};
template <typename T>
constexpr T && foo (typename A <T>::type & __t) noexcept
{
  return static_cast <T &&>(__t);
}
template <class T1, class T2>
struct B
{
  T1 t1;
  T2 t2;
  template <class U>
  constexpr B (U && __x, const T2 & __y) : t1 (foo <U> (__x)), t2 (__y) {}
};
static inline constexpr bool
fn1 (const char c)
{
  return ('0' <= c) && (c <= '9');
}
static inline constexpr bool
fn2 (const char c)
{
  return (('A' <= c) && (c <= 'Z')) || (('a' <= c) && (c <= 'z'));
}
static constexpr bool
fn3 (const char *const x)
{
  return (x[1] == '\0' && x[0] == ']') ? true : (!fn1 (x[0])) ? false : fn3 (&x[1]);
}
static constexpr bool
fn4 (const char *const x)
{
  return (x[0] == '\0') ? fn3 (&x[1]) : fn4 (&x[1]);
}
static inline constexpr bool
fn5 (const char *const x)
{
  return fn2 (x[0]) ? fn4 (x) : false;
}
struct C final
{
  constexpr C (const char *const t1) : c (fn5 (t1) ? 199 : 69) {}
  unsigned c;
};
B <C, C> p ("a", "b");