1class HasFriends {
2  friend void friend_1(HasFriends);
3  friend void friend_2(HasFriends);
4  void private_thing();
5};
6
7struct HasNontrivialDefaultConstructor {
8  HasNontrivialDefaultConstructor() = default;
9  HasNontrivialDefaultConstructor(int n = 0);
10
11  // Ensure this class is not POD but is still trivially-copyable.
12  // This is necessary to exercise the second static_assert below,
13  // because GCC's spec for __has_trivial_constructor is absurd.
14  int m;
15private:
16  int n;
17};
18
19static_assert(!__is_trivial(HasNontrivialDefaultConstructor), "");
20static_assert(!__has_trivial_constructor(HasNontrivialDefaultConstructor), "");
21
22void *operator new[](__SIZE_TYPE__);
23
24extern int mergeUsedFlag;
25inline int getMergeUsedFlag() { return mergeUsedFlag; }
26