HWY_0 {
  global:
    extern "C++" {
      *hwy::*;
    };

  local:
    # Hide all the std namespace symbols. std namespace is explicitly marked
    # as visibility(default) and header-only functions or methods (such as those
    # from templates) should be exposed in shared libraries as weak symbols but
    # this is only needed when we expose those types in the shared library API
    # in any way. We don't use C++ std types in the API and we also don't
    # support exceptions in the library.
    # See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36022 for a discussion
    # about this.
    extern "C++" {
      *std::*;
    };
};
