1 class HasFriends { 2 friend void friend_1(HasFriends); 3 friend void friend_2(HasFriends); 4 void private_thing(); 5 }; 6 7 struct 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; 15 private: 16 int n; 17 }; 18 19 static_assert(!__is_trivial(HasNontrivialDefaultConstructor), ""); 20 static_assert(!__has_trivial_constructor(HasNontrivialDefaultConstructor), ""); 21 22 void *operator new[](__SIZE_TYPE__); 23 24 extern int mergeUsedFlag; 25 inline int getMergeUsedFlag() { return mergeUsedFlag; } 26