1 namespace std { 2 struct string { 3 string(const char *); 4 ~string(); 5 }; 6 } // namespace std 7 8 namespace absl { StringsFunction(std::string s1)9std::string StringsFunction(std::string s1) { return s1; } 10 class SomeContainer {}; 11 namespace strings_internal { InternalFunction()12void InternalFunction() {} InternalTemplateFunction(P a)13template <class P> P InternalTemplateFunction(P a) {} 14 } // namespace strings_internal 15 16 namespace container_internal { 17 struct InternalStruct {}; 18 19 template <typename T> struct InternalTemplate {}; 20 } // namespace container_internal 21 } // namespace absl 22 23 // should not trigger warnings because inside Abseil files DirectAcessInternal()24void DirectAcessInternal() { 25 absl::strings_internal::InternalFunction(); 26 absl::strings_internal::InternalTemplateFunction<std::string>("a"); 27 } 28 29 class FriendUsageInternal { 30 friend struct absl::container_internal::InternalStruct; 31 }; 32 33 namespace absl { OpeningNamespaceInternally()34void OpeningNamespaceInternally() { strings_internal::InternalFunction(); } 35 } // namespace absl 36